Laravel 路由的问题: 路由的四个方法,到底有什么本质区别?请大家指点一下!
GET 获取资源
POST 创建资源
PUT 编辑/更新资源(需提交完整的资源字段)
PATCH 编辑/更新资源(可以提交需要更新的字段)
DELETE 删除资源
OPTIONS 服务器允许哪些请求谓词
上述这些方法都是调用了某个控制器中的方法,但是问题来了:
我在 get 路由导向的控制器方法中,写入删除逻辑,那是不是就是 delete 了。。
他们到底有什么本质区别呢?
我遇到的实际问题是:向后台发送一个运行“预设好的一系列逻辑计算”命令,只传递命令,没有参数,应该用哪个方法?请大家指点一下!
如果你要使用 GET/POST/PUT/PATCH/DELETE 这些方法那么请遵循Restful风格。请注意Restful只是一种风格,并没有强制你必须怎么做。在GET里写DELETE也没什么问题,你喜欢就好。
Restful讲求的是在概念层面把一切都转化为资源,用URL定位这些资源,全用GET/POST/PUT/PATCH/DELETE来操作些这些资源。
比如你的需求“向后台发送一个运行 “预设好的一系列逻辑计算” 命令”,一般来讲这些逻辑命令并非毫无关联可言,他们要配合在一起完成某个特定的目标(如果不止一个目标,请考虑拆分开)。那么这个目标就是你从概念层面进行转化的目标。
例:给某人点赞。
从Restful的角度来看,赞就是种资源,归属于某人。用URL进行定位就是 /users/1/laud
那么我们要点赞的话怎么点呢? 把“点”这个动作转换成创建 /users/1/laud
最终的成品就是 点赞 = POST /users/1/laud,撤销就是DELETE /users/1/laud
如果是软删除的恢复呢?并没有Restore这种动词怎么办? Google给出的建议是POST /users/1/laud:restore
记住Restful只是种风格,如果没有人要求你必须遵守的话,可以遵守也可以不遵守。