资源控制器 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 开关:

浙公网安备 33010602011771号