Laravel Resource Routes和API Resource Routes讲解
在 Laravel 中,Resource Routes 和 API Resource Routes 是两种用于定义 RESTful 路由的便捷方法。它们帮助开发者快速创建遵循 RESTful 标准的路由集合,分别适用于普通 Web 应用和 API 应用。
Resource Routes
Resource Routes 是为传统的 Web 应用设计的,它们生成了一组常见的 CRUD 路由,同时适用于 Web 中间件组。要定义 Resource Routes,可以使用 Route::resource
方法。下面是一个示例:
use Illuminate\Support\Facades\Route; Route::resource('posts', 'PostController');
这条命令会生成以下七个路由:
HTTP Method | URL | Action | Route Name |
---|---|---|---|
GET | /posts | index | posts.index |
GET | /posts/create | create | posts.create |
POST | /posts | store | posts.store |
GET | /posts/ | show | posts.show |
GET | /posts/{post}/edit | edit | posts.edit |
PUT/PATCH | /posts/ | update | posts.update |
DELETE | /posts/ | destroy | posts.destroy |
这些路由适用于处理 Web 请求,因此会加载 web
中间件组,默认情况下包含会话管理、CSRF 保护等功能。
API Resource Routes
API Resource Routes 类似于 Resource Routes,但它们是为 API 设计的,通常不包含会话和 CSRF 保护。使用 Route::apiResource
方法可以定义 API Resource Routes。
use Illuminate\Support\Facades\Route; Route::apiResource('posts', 'PostController');
这条命令生成的路由与 Route::resource
大致相同,但省略了用于显示和编辑的路由:
HTTP Method | URL | Action | Route Name |
---|---|---|---|
GET | /posts | index | posts.index |
POST | /posts | store | posts.store |
GET | /posts/ | show | posts.show |
PUT/PATCH | /posts/ | update | posts.update |
DELETE | /posts/ | destroy | posts.destroy |
比较与选择
-
Resource Routes:
- 包含所有七个 RESTful 动作:index、create、store、show、edit、update、destroy。
- 适用于传统 Web 应用,需要会话、CSRF 保护等功能。
- 使用
Route::resource
方法定义。
-
API Resource Routes:
- 省略 create 和 edit 路由,仅包含 index、store、show、update、destroy。
- 适用于 API 应用,不需要会话和 CSRF 保护。
- 使用
Route::apiResource
方法定义。
示例:定义和使用
Resource Routes 示例
控制器方法示例:
class PostController extends Controller { public function index() { // 显示所有资源 } public function create() { // 显示创建资源的表单 } public function store(Request $request) { // 存储新资源 } public function show($id) { // 显示单个资源 } public function edit($id) { // 显示编辑资源的表单 } public function update(Request $request, $id) { // 更新资源 } public function destroy($id) { // 删除资源 } }
API Resource Routes 示例
控制器方法示例:
class PostController extends Controller { public function index() { // 返回所有资源 } public function store(Request $request) { // 存储新资源 } public function show($id) { // 返回单个资源 } public function update(Request $request, $id) { // 更新资源 } public function destroy($id) { // 删除资源 } }
选择哪种路由定义方法取决于你的应用需求。如果你开发的是一个需要视图和表单的传统 Web 应用,使用 Resource Routes。如果你开发的是 RESTful API 服务,使用 API Resource Routes 更为合适。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步