Laravel 路由 apiResource(路由中 apiResource 和资源的区别)

问题描述 投票:0回答:4

我在路线中使用

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上下文中没有意义的创建和编辑路由.

api laravel-5 model-view-controller routes resources
4个回答
47
投票

人们已经添加了答案,我只是在视觉上添加路线差异:

普通资源控制器

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

Api 资源控制器

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

20
投票

要快速生成不包含 create 或 edit 方法的 API 资源控制器,请在执行 make:controller 命令时使用 --api 开关:

php artisan make:controller API/PhotoController --api

尝试使用命令行生成控制器。它会减轻你的压力。然后您可以在您的路线中执行此操作

Route::apiResource('photos', 'PhotoController');

0
投票

我通过以下方式解决了我的问题:

public function show(Fruits $fruits, Apples $apples){

}

我发现我应该在函数中给出所有变量,但我没有使用所有变量。


0
投票

这里是 api 资源路由的文档链接(Laravel 10):

https://laravel.com/docs/10.x/controllers#api-resource-routes

© www.soinside.com 2019 - 2024. All rights reserved.