Laravel 9中Route::resource与Route::get的区别是什么?
Laravel 9中两段路由代码的核心区别
首先得纠正第一段代码的语法错误:你写的Route::resource('/blog',[PostController::class);少了闭合括号,Laravel 9里正确的资源路由写法是Route::resource('/blog', PostController::class);(不用把控制器类名包进数组,除非要加额外配置项)。
下面是两者的核心差异:
路由覆盖范围完全不同
Route::get('/blog',[PostController::class,'index']);:只注册1条GET请求路由,仅匹配/blog路径,唯一对应PostController的index方法(一般用来展示博客列表)。Route::resource('/blog', PostController::class);:会自动生成7条符合RESTful风格的路由,覆盖GET/POST/PUT/DELETE等多种HTTP请求方法,对应控制器里约定好的7个方法:HTTP方法 路径 控制器方法 用途 GET /blog index 展示博客列表 GET /blog/create create 显示创建博客的表单页面 POST /blog store 提交创建博客的表单数据 GET /blog/{blog} show 展示单篇博客详情 GET /blog/{blog}/edit edit 显示编辑博客的表单页面 PUT/PATCH /blog/{blog} update 提交编辑博客的表单数据 DELETE /blog/{blog} destroy 删除指定博客
适用场景不一样
- 单条
GET路由适合只需要展示列表的简单场景,或者需要自定义特殊逻辑的情况。 - 资源路由适合做完整的CRUD(增删改查)功能,不用手动一条条写路由,遵循标准的资源管理风格,效率更高。
- 单条
路由命名差异
- 单条
GET路由默认没有命名(得手动加->name()才会有),而资源路由会自动生成规范的命名,比如blog.index、blog.create这些,方便在视图或控制器里用route()函数调用。
- 单条
内容的提问来源于stack exchange,提问作者Lab Devices
相关产品推荐
相关产品推荐

