http post put patch 总结

idempotent 幂等的

如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的;
idempotent的意思是如果相同的操作再執行第二遍第三遍,結果還是一樣。
"Methods can also have the property of 'idempotence' in that (aside from error
or expiration issues) the side-effects of N > 0 identical requests is the same
as for a single request."

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

http post put 区别

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

举个栗子:

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

PATCH 方法

PATCH方法是新引入的,是对PUT方法的补充,用来对已知资源进行**局部更新**
HTTP PATCH method require a feature to do partial resource modification.
The existing HTTP PUT method only allows a complete replacement of a document.

需要注意的地方

**语义** 而非 风格;是语义的问题,换句话说:
也就是这取决于这个REST服务的行为是否是idempotent(幂等的)
// 但是这个只是在语义上,同时不要太苛求语义
DELETE 刪除,無論如何 资源 最後都将不复存在
// PUT    替換(新增或完整更新)
// PATCH  部分更新

Examples from github api v3

create a gist
POST /gists

star a gist
PUT /gists/:id/stars

设计 restful api 需要注意的问题

**名词复数**

URIs

names > verbs : 推荐使用具象化的名词而不是动词

plural > singular

Resource collections: /v1/users
Resource instances:   /v1/users/007

ps: 文章里的内容是我在平时的学习过程中算是摘录吧

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值