资源控制器 RESTful 详细讲解查看laravel8 控制器文档

资源控制器

1、Laravel 的资源控制器可以让我们很便捷地构建基于资源的 RESTful 控制器,例如,你可能想要在应用中创建一个控制器,用于处理关于文章存储的 HTTP 请求,使用 Artisan 命令 make:controller,我们可以快速创建这样的控制器:

php artisan make:controller PostController --resource

2、接下来,可以通过 resource 方法为该控制器注册一个资源路由:

Route::resource('posts', \App\Http\Controllers\PostController::class);

 

3、这个路由声明包含了处理文章资源对应动作的多个路由,相应地,Artisan 生成的控制器也已经为这些动作设置了对应的处理方法。

你可以通过传递数组到 resources 方法从而一次注册多个资源控制器:

Route::resources([
   'photos' => PhotoController::class,
   'posts' => PostController::class,
]);

资源控制器处理的动作

请求方式URI路径控制器方法路由名称
GET /posts index posts.index
GET /posts/create create posts.create
POST /posts store posts.store
GET /posts/{post} show posts.show
GET /posts/{post}/edit edit posts.edit
PUT/PATCH /posts/{post} update posts.update
DELETE /posts/{post} destroy posts.destroy

4、指定资源模型

如果你使用了路由模型绑定,并且想要在资源控制器的方法中对模型实例进行依赖注入,可以在生成控制器的使用使用 --model 选项:

php artisan make:controller PostController --resource --model=Post

可以看到,如果 Post 类不存在的话会询问并自动创建,同时 PostController 类中的方法参数也变成了模型实例

 

5、API 资源路由

声明被 API 消费的资源路由时,你可能需要排除展示 HTML 模板的路由,如 create 和 edit,为了方便起见,Laravel 提供了 apiResource 方法自动排除这两个路由:

Route::apiResource('posts', PostController::class);

同样,你可以传递数组到 apiResources 方法以便一次注册多个 API 资源控制器:

Route::apiResources([
  'photos' => PhotoController::class,
  'posts' => PostController::class,
]);

6、

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

php artisan make:controller API/PostController --api
7、嵌套资源

 

 

posted @ 2021-08-09 19:03  没事就更  阅读(274)  评论(0编辑  收藏  举报