Laravel Route apiResource(路由中apiResource和resource的区别)

Sho*_*iri 5 api model-view-controller resources routes laravel-5

apiResource在 Route 中使用,它(index, create, show, update, destroy)exampleController. 当我想使用 show 方法时,路由将不起作用。我该怎么办?我想是因为{fruits}但是我没有怎么解决呢?

Route::apiResource('/fruit/{fruits}/apples', 'exampleController');
Run Code Online (Sandbox Code Playgroud)

我在浏览器中的路线是:

localhost:8000/api/fruits/testFruitSlug/apples/testAppleSlug
Run Code Online (Sandbox Code Playgroud)

apiResource 和 resource in route 的区别: Route::apiResource()只为 index、store、show、update 和 destroy 创建路由,同时Route::resource()还添加了在 API 上下文中没有意义的 create 和 edit 路由。

Emt*_*hid 50

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

普通资源控制器

Route::resource('users', 'UsersController');
Run Code Online (Sandbox Code Playgroud)

为您提供这些命名路线:

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
Run Code Online (Sandbox Code Playgroud)

API资源控制器

Route::apiResource('users', 'UsersController');
Run Code Online (Sandbox Code Playgroud)

为您提供这些命名路线:

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
Run Code Online (Sandbox Code Playgroud)


Pia*_*mer 8

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

php artisan make:controller API/PhotoController --api
Run Code Online (Sandbox Code Playgroud)

尝试使用命令行生成控制器。它会节省你的压力。然后你可以在你的路线中做到这一点

Route::apiResource('photos', 'PhotoController');
Run Code Online (Sandbox Code Playgroud)

  • 甚至 Route::apiResources(['photos' => 'PhotoController',pages'' => 'PageController']); (2认同)