第六篇 常用请求协议之post put patch 总结

[转]https://blog.csdn.net/sshfl_csdn     感谢愿意总结分享的人,thanks

idempotent 幂等的

如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的;
idempotent的意思是如果相同的操作再执行第二遍第三遍,产生结果还是一样的。

POST 方法

用来创建一个子资源,如 /api/users,会在users下面创建一个user,如users/1;
POST方法不是幂等的,多次执行,将导致多条相同的用户被创建(users/1,users/2 ...
而这些用户除了自增长id外有着相同的数据,除非你的系统实现了额外的数据唯一性检查)

PUT 方法

PUT比较正确的定义是 Replace (Create or Update),
例如 PUT /items/1 的意思是替换 /items/1 ,如果已经存在就替换,沒有就新增;
因此,PUT方法一般会用来更新一个已知资源,除非在创建前,你完全知道自己要创建的对象的URI

Post 与 Put 区别

在HTTP中,PUT被定义为idempotent的方法;
POST则不是,这是一个很重要的区别

举例说明:
POST /api/articles
PUT /gists/id/stars
如果产生两个“资源”,就说明这个服务不是idempotent(幂等的),因为多次使用产生了副作用---应该使用POST方法;
如果后一个请求把第一个请求**覆盖**掉了,那这个服务就是idempotent的 ---应该使用PUT方法。

PATCH 方法

PATCH方法是新引入的,是对PUT方法的补充,用来对已知资源进行"局部更新"

需要注意的地方

"语义" 而非 风格;是语义的问题,换句话说:
也就是这取决于这个REST服务的行为是否是idempotent(幂等的)

// 但是这个只是在语义上,同时不要太苛求语义
DELETE: 刪除,无论如何 资源 最后都将不复存在
PUT:    替换(新增或完整更新)
PATCH:  部分更新
原文地址:https://www.cnblogs.com/victorm/p/9199161.html