Laravel 中的意外 404 未找到错误 (5.8)

Unexpected 404 Not Found Error in Laravel (5.8)

我在 api.php

中有这些行
Route::apiResources([
    'users' => 'Api\UserController',
    'products' => 'Api\ProductController',
    'categories' => 'Api\CategoryController',
]);

Route::get('/users/custom1', 'Api\UserController@custom1');

当我按此顺序排列它们并调用路由时,我收到 404 Not Found。

但是当我改变顺序时,我得到结果:

Route::get('/users/custom1', 'Api\UserController@custom1');

Route::apiResources([
    'users' => 'Api\UserController',
    'products' => 'Api\ProductController',
    'categories' => 'Api\CategoryController',
]);

这种情况让我很沮丧,因为我认为错误源于模型和查找方法:

public function custom1()
{
    $user2 = User::find(2);

    return $user2;
}

因为我在 Postman 中检查结果,当你要求 application/json 作为响应时,它会显示这样的错误:

{
    "message": "No query results for model [App\User] custom1",
    "exception": "Symfony\Component\HttpKernel\Exception\NotFoundHttpException",
    "file": "C:\wamp64\www\laravel-api\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php",
    "line": 204,
    "trace": [
        {...

此更改的原因是什么?

因为在这两种情况下我都可以看到 route:list 中的路线。

好的,我检查的时候明白了原因route:list 头脑清醒了

Laravel 按字母顺序显示 route:list 但实际上我们在路由文件中写入的顺序很重要吗?

所以,我想到如果这条线排在第一位:

Laravel 正在尝试使用 custom1 作为路由参数。

所以我必须在api资源路由之前定义这条特定路由:

Route::get('/users/custom1', 'Api\UserController@custom1');

Route::apiResources([
    'users' => 'Api\UserController',
    'products' => 'Api\ProductController',
    'categories' => 'Api\CategoryController',
]);