关于tp5的资源路由的疑问

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

https://img3.mukewang.com/5c8f685a00015c4308000449.jpg

可是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的手册,这个疑问一直困扰着,望大神点醒

慕后森
浏览 595回答 2
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');
打开App,查看更多内容
随时随地看视频慕课网APP