为了账号安全,请及时绑定邮箱和手机立即绑定

关于tp5的资源路由的疑问

关于tp5的资源路由的疑问

PHP
慕后森 2019-03-12 22:38:25
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的手册,这个疑问一直困扰着,望大神点醒
查看完整描述

2 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

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

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

查看完整回答
反对 回复 2019-03-18
?
慕森卡

TA贡献1806条经验 获得超8个赞

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

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');

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 594 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信