关于tp5的资源路由的疑问

tp5的资源路由会自动注册如下路由

图片描述

可是http动词含义应该是:
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
为什么注册了7个路由,多出了3个get路由?按照restful风格,增删改查不应该就四个路由:get,post,put,delete吗?get-blog/:id 和get-blog没有问题,可是get-blog/create和get-blog/:id/edit是什么情况。。。edit不应该是put请求的操作吗?最近在看tp5的手册,这个疑问一直困扰着,望大神点醒

阅读 3.4k
2 个回答

不能完全从API的角度考虑问题,他这个restful风格的资源路由,还包含前后端分离web应用的表单功能

GET blog/create就是创建博客的表单 =》 提交到 POST blog 去创建一个新博客
GET blog/:id/edit 就是某个ID对应的博客编辑表单 =》 提交到 PUT blog/:id 去更新修改的数据

楼主没看全文档。这个路由其实是简写,一条路由等于七条路由,用不用看个人。

use think\Route;
//第二个参数的意思是:工程/控制器
Route::resource('index','index/index');
//上面这条其实等于下面这七条路由

Route::rule('/index','index/index/index','get');
Route::rule('/index/create','index/index/create','get');
Route::rule('/index/save','index/index/save','post');
Route::rule('/index/:id','index/index/read','get');
Route::rule('/index/:id/edit','index/index/edit','get');
Route::rule('/index/:id','index/index/update','put');
Route::rule('/index/:id','index/index/delete','delete');

至于楼主说的edit是put,我们edit的时候,主要是要把对应id以前的内容调出来,不提交,所以用get,在edit页面编辑完,用put提交给Route::rule('/index/:id','index/index/update','put');

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题