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',
]);
我在 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',
]);