[GH-ISSUE #2098] [Bug]: GET /api/users/{user} route defined by apiResource is unimplemented, causing 500 error #1095

Closed
opened 2026-02-26 02:35:13 +03:00 by kerem · 2 comments
Owner

Originally created by @WangYihang on GitHub (Sep 12, 2025).
Original GitHub issue: https://github.com/koel/koel/issues/2098

Originally assigned to: @phanan on GitHub.

Read the Troubleshooting guide.

  • I have read and followed the Troubleshooting guide

Reproduction steps

  1. Clone the repository and set up the environment:
git clone https://github.com/koel/docker.git --depth 1 --branch 27cefe858e0fb87b33886977d95fc95548e81fe2
cd docker
docker compose -f docker-compose.mysql.yml up -d
  1. Initialize the Koel application.
docker compose -f docker-compose.mysql.yml exec -i koel php artisan koel:init --no-assets
  1. Verify the setup with a successful API call (e.g., index method, which is implemented).
$ curl -s 'http://localhost/api/users' -H 'Authorization: Bearer YOUR_API_TOKEN'
[
  {
    "type": "users",
    "id": "195bb99d-552a-4a5d-9a77-0e8244c12eed",
    "name": "Koel",
    "email": "admin@koel.dev",
    "avatar": "https://www.gravatar.com/avatar/fbcba82c64cd973467a0e1b0600c1c1b?s=192&d=robohash",
    "is_admin": true,
    // ...
    "sso_id": null
  }
]

This confirms the environment is running and the token is valid for interacting with UserController.

  1. Trigger the bug by attempting to fetch a single user, which calls the unimplemented show method. Use any user ID, e.g., '1'.
$ curl -s 'http://localhost/api/users/1' -H 'Authorization: Bearer YOUR_API_TOKEN'

Expected behavior

$ curl -s http://localhost:8000/api/users/1 -H 'Authorization: Bearer YOUR_API_TOKEN'   | jq
{
  "type": "users",
  "id": 1,
  "name": "Koel",
  "email": "admin@koel.dev",
  "avatar": "https://www.gravatar.com/avatar/fbcba82c64cd973467a0e1b0600c1c1b?s=192&d=robohash",
  "is_admin": true,
  // ...
  "sso_id": null
}

Actual behavior

The server returns a 500 Internal Server Error page. The response body contains the fatal error:

$ curl -s 'http://localhost/api/users/1' -H 'Authorization: Bearer YOUR_API_TOKEN' | grep 'undefined method'
Call to undefined method App\Http\Controllers\API\UserController::show()

Logs

``` [2025-09-12 06:29:58] production.ERROR: Call to undefined method App\Http\Controllers\API\UserController::show() {"userId":1,"exception":"[object] (Error(code: 0): Call to undefined method App\\Http\\Controllers\\API\\UserController::show() at /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:47) [stacktrace] #0 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\\Routing\\ControllerDispatcher->dispatch() #1 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\Route->runController() #2 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\\Routing\\Route->run() #3 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Routing\\Router->{closure:Illuminate\\Routing\\Router::runRouteWithinStack():807}() #4 /var/www/html/vendor/laravel/nightwatch/src/Hooks/RouteMiddleware.php(34): Illuminate\\Pipeline\\Pipeline->{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():168}() #5 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Laravel\\Nightwatch\\Hooks\\RouteMiddleware->handle() #6 /var/www/html/app/Http/Middleware/ForceHttps.php(28): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #7 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\ForceHttps->handle() #8 /var/www/html/app/Http/Middleware/HandleDemoMode.php(44): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #9 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\HandleDemoMode->handle() #10 /var/www/html/app/Http/Middleware/RestrictPlusFeatures.php(30): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #11 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\RestrictPlusFeatures->handle() #12 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(51): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #13 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle() #14 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(64): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #15 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Auth\\Middleware\\Authenticate->handle() #16 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #17 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then() #18 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\\Routing\\Router->runRouteWithinStack() #19 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\\Routing\\Router->runRoute() #20 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\\Routing\\Router->dispatchToRoute() #21 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\\Routing\\Router->dispatch() #22 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Foundation\\Http\\Kernel->{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():198}() #23 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():168}() #24 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() #25 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle() #26 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #27 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() #28 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle() #29 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #30 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\ValidatePostSize->handle() #31 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #32 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle() #33 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(62): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #34 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\HandleCors->handle() #35 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #36 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\TrustProxies->handle() #37 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #38 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle() #39 /var/www/html/vendor/laravel/nightwatch/src/Hooks/GlobalMiddleware.php(53): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #40 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Laravel\\Nightwatch\\Hooks\\GlobalMiddleware->handle() #41 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #42 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Pipeline\\Pipeline->then() #43 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter() #44 /var/www/html/public/index.php(56): Illuminate\\Foundation\\Http\\Kernel->handle() #45 {main} "} ```

Koel version

v7.15.0

How did you install Koel?

Official Docker image

Additional information

  • Server OS: Linux
  • PHP version: 8.4.8
  • Database: MySQL
  • Node version: N/A
  • Browser & device: N/A
  • Additional context: N/A
Originally created by @WangYihang on GitHub (Sep 12, 2025). Original GitHub issue: https://github.com/koel/koel/issues/2098 Originally assigned to: @phanan on GitHub. ### Read the Troubleshooting guide. - [x] I have read and followed the Troubleshooting guide ### Reproduction steps 1. Clone the repository and set up the environment: ```bash git clone https://github.com/koel/docker.git --depth 1 --branch 27cefe858e0fb87b33886977d95fc95548e81fe2 cd docker docker compose -f docker-compose.mysql.yml up -d ``` 2. Initialize the Koel application. ```bash docker compose -f docker-compose.mysql.yml exec -i koel php artisan koel:init --no-assets ``` 3. Verify the setup with a successful API call (e.g., `index` method, which is implemented). ```bash $ curl -s 'http://localhost/api/users' -H 'Authorization: Bearer YOUR_API_TOKEN' [ { "type": "users", "id": "195bb99d-552a-4a5d-9a77-0e8244c12eed", "name": "Koel", "email": "admin@koel.dev", "avatar": "https://www.gravatar.com/avatar/fbcba82c64cd973467a0e1b0600c1c1b?s=192&d=robohash", "is_admin": true, // ... "sso_id": null } ] ``` This confirms the environment is running and the token is valid for interacting with `UserController`. 4. Trigger the bug by attempting to fetch a single user, which calls the unimplemented `show` method. *Use any user ID, e.g., '1'.* ```bash $ curl -s 'http://localhost/api/users/1' -H 'Authorization: Bearer YOUR_API_TOKEN' ``` ### Expected behavior ```bash $ curl -s http://localhost:8000/api/users/1 -H 'Authorization: Bearer YOUR_API_TOKEN' | jq { "type": "users", "id": 1, "name": "Koel", "email": "admin@koel.dev", "avatar": "https://www.gravatar.com/avatar/fbcba82c64cd973467a0e1b0600c1c1b?s=192&d=robohash", "is_admin": true, // ... "sso_id": null } ``` ### Actual behavior The server returns a `500 Internal Server Error` page. The response body contains the fatal error: ```bash $ curl -s 'http://localhost/api/users/1' -H 'Authorization: Bearer YOUR_API_TOKEN' | grep 'undefined method' Call to undefined method App\Http\Controllers\API\UserController::show() ``` ### Logs <details> ``` [2025-09-12 06:29:58] production.ERROR: Call to undefined method App\Http\Controllers\API\UserController::show() {"userId":1,"exception":"[object] (Error(code: 0): Call to undefined method App\\Http\\Controllers\\API\\UserController::show() at /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:47) [stacktrace] #0 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\\Routing\\ControllerDispatcher->dispatch() #1 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\Route->runController() #2 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\\Routing\\Route->run() #3 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Routing\\Router->{closure:Illuminate\\Routing\\Router::runRouteWithinStack():807}() #4 /var/www/html/vendor/laravel/nightwatch/src/Hooks/RouteMiddleware.php(34): Illuminate\\Pipeline\\Pipeline->{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():168}() #5 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Laravel\\Nightwatch\\Hooks\\RouteMiddleware->handle() #6 /var/www/html/app/Http/Middleware/ForceHttps.php(28): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #7 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\ForceHttps->handle() #8 /var/www/html/app/Http/Middleware/HandleDemoMode.php(44): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #9 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\HandleDemoMode->handle() #10 /var/www/html/app/Http/Middleware/RestrictPlusFeatures.php(30): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #11 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\RestrictPlusFeatures->handle() #12 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(51): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #13 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle() #14 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(64): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #15 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Auth\\Middleware\\Authenticate->handle() #16 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #17 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then() #18 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\\Routing\\Router->runRouteWithinStack() #19 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\\Routing\\Router->runRoute() #20 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\\Routing\\Router->dispatchToRoute() #21 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\\Routing\\Router->dispatch() #22 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Foundation\\Http\\Kernel->{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():198}() #23 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():168}() #24 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() #25 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle() #26 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #27 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() #28 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle() #29 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #30 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\ValidatePostSize->handle() #31 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #32 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle() #33 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(62): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #34 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\HandleCors->handle() #35 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #36 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\TrustProxies->handle() #37 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #38 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle() #39 /var/www/html/vendor/laravel/nightwatch/src/Hooks/GlobalMiddleware.php(53): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #40 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Laravel\\Nightwatch\\Hooks\\GlobalMiddleware->handle() #41 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}() #42 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Pipeline\\Pipeline->then() #43 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter() #44 /var/www/html/public/index.php(56): Illuminate\\Foundation\\Http\\Kernel->handle() #45 {main} "} ``` </details> ### Koel version v7.15.0 ### How did you install Koel? Official Docker image ### Additional information - **Server OS**: Linux - **PHP version**: 8.4.8 - **Database**: MySQL - **Node version**: N/A - **Browser & device**: N/A - **Additional context**: N/A
kerem closed this issue 2026-02-26 02:35:13 +03:00
Author
Owner

@phanan commented on GitHub (Sep 12, 2025):

This is not a bug. The route is simply not defined, because there's no use for it.

<!-- gh-comment-id:3283951967 --> @phanan commented on GitHub (Sep 12, 2025): This is not a bug. The route is simply not defined, because there's no use for it.
Author
Owner

@WangYihang commented on GitHub (Sep 12, 2025):

You're right, it's not a functional bug since the endpoint isn't an intended feature.

The issue is a technical one: Route::apiResource still registers the public route, but calling it causes a 500 fatal error instead of a cleaner response like a 404. This can be problematic for API clients and automated tools.

A simple fix that perfectly aligns the code with your intent is to explicitly list only the implemented methods:

// In routes/api.base.php
Route::apiResource('users', UserController::class)->only([
    'store', 'update', 'destroy'
]);

This removes the problematic route and prevents the 500 error. I can submit a quick PR for this one-line change if you'd like.

Thanks!

<!-- gh-comment-id:3283982333 --> @WangYihang commented on GitHub (Sep 12, 2025): You're right, it's not a functional bug since the endpoint isn't an intended feature. The issue is a technical one: `Route::apiResource` still registers the public route, but calling it causes a 500 fatal error instead of a cleaner response like a 404. This can be problematic for API clients and automated tools. A simple fix that perfectly aligns the code with your intent is to explicitly list only the implemented methods: ```PHP // In routes/api.base.php Route::apiResource('users', UserController::class)->only([ 'store', 'update', 'destroy' ]); ``` This removes the problematic route and prevents the 500 error. I can submit a quick PR for this one-line change if you'd like. Thanks!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/koel-koel#1095
No description provided.