【问题标题】:Unexpected 404 Not Found Error in Laravel (5.8)Laravel (5.8) 中出现意外的 404 Not Found 错误
【发布时间】:2021-03-30 12:26:02
【问题描述】:

我在 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 中看到路线。

【问题讨论】:

  • 请分享更多细节——“呼叫路线”是什么意思?您尝试过什么来调试该问题?

标签: laravel-routing


【解决方案1】:

好的,当我检查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',
]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-24
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2017-11-25
    • 2016-10-05
    • 1970-01-01
    相关资源
    最近更新 更多