我在路线中使用
apiResource
,而路线在(index, create, show, update, destroy)
中使用exampleController
方法。当我想使用 show 方法时,该路线将不起作用。我该怎么办?我认为这是因为{fruits}
,但我不知道如何解决?
Route::apiResource('/fruit/{fruits}/apples', 'exampleController');
我在浏览器中的路线是:
localhost:8000/api/fruits/testFruitSlug/apples/testAppleSlug
路由中apiResource和资源之间的区别:
Route::apiResource()
仅创建用于索引、存储、显示、更新和销毁的路由,而Route::resource()
还添加了在API上下文中没有意义的创建和编辑路由.
人们已经添加了答案,我只是在视觉上添加路线差异:
Route::resource('users', 'UsersController');
为您提供这些命名路线:
Verb Path Action Route Name
GET /users index users.index
GET /users/create create users.create
POST /users store users.store
GET /users/{user} show users.show
GET /users/{user}/edit edit users.edit
PUT|PATCH /users/{user} update users.update
DELETE /users/{user} destroy users.destroy
Route::apiResource('users', 'UsersController');
为您提供这些命名路线:
Verb Path Action Route Name
GET /users index users.index
POST /users store users.store
GET /users/{user} show users.show
PUT|PATCH /users/{user} update users.update
DELETE /users/{user} destroy users.destroy
要快速生成不包含 create 或 edit 方法的 API 资源控制器,请在执行 make:controller 命令时使用 --api 开关:
php artisan make:controller API/PhotoController --api
尝试使用命令行生成控制器。它会减轻你的压力。然后您可以在您的路线中执行此操作
Route::apiResource('photos', 'PhotoController');
我通过以下方式解决了我的问题:
public function show(Fruits $fruits, Apples $apples){
}
我发现我应该在函数中给出所有变量,但我没有使用所有变量。
这里是 api 资源路由的文档链接(Laravel 10):
https://laravel.com/docs/10.x/controllers#api-resource-routes