我在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',
]);这种情况让我很沮丧,因为我认为错误来自于模型和find方法:
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中看到路由。
发布于 2021-03-31 21:06:41
好了,当我更清楚地检查了route:list时,我已经意识到了原因。

Laravel按字母顺序显示route:list,但实际上我们在route文件中写入的顺序很重要,对吧?
所以,我突然想到,如果这一行先出现:

Laravel正在尝试使用custom1作为路由参数。
所以我必须在api资源路由之前定义这个特定的路由:
Route::get('/users/custom1', 'Api\UserController@custom1');
Route::apiResources([
'users' => 'Api\UserController',
'products' => 'Api\ProductController',
'categories' => 'Api\CategoryController',
]);https://stackoverflow.com/questions/66870921
复制相似问题