Restful API 以及对 Put/Post 区别理解

REST: Representational State Transfer
RESTful API: 符合REST设计标准的API

RESTful 设计标准:
url 对应服务器上的一种资源,e.g. 数据,图片等,所以url 中只含有名词,通过HTTP动词来描述对资源的操作方式。

url示例:https://api.example.com/v1/zoos

HTTP 动词

  • GET: 获取资源
  • POST:创建或更新资源
  • PUT: 创建或更新资源
  • DELETE:删除资源
  • HEAD:获取资源的元数据,不常用
  • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的, 不常用

POST 和 PUT 都可以用于创建和修改资源,它们的区别是什么呢?

引用stackoverflow 上的回答:

POST:

> modify and update a resource
POST /questions/<existing_question> HTTP/1.1

> create a resource:
POST /questions HTTP/1.1

> Note that the following is an error:
POST /questions/<new_question> HTTP/1.1


PUT:

> To overwrite an existing resource:
PUT /questions/<existing_question> HTTP/1.1

> create a resource:
PUT /questions/<new_question> HTTP/1.1

在更新资源的操作上,POST 和 PUT 基本相同。

在创建资源时,PUT可以指定资源路径,POST无法指定资源路径。

因而,PUT是幂等的操作,即重复操作不会产生变化,10次PUT 的创建请求与1次PUT 的创建请求相同,只会创建一个资源,其实后面9次的请求只是对已创建资源的更新,且更新内容与原内容相同,所以不会产生变化。

POST 的重复操作截然不同,10次POST请求将会创建10个资源。

绝大多数的请求都可以通过POST实现,PUT 幂等的特性也可以在服务器端通过特殊处理来达到相同的效果,因而在API 设计时
并不一定需要兼顾 PUT 和 POST, 但需要根据实际需求进行选择。

参考:
https://www.csdn.net/article/2013-06-13/2815744-RESTful-API
https://stackoverflow.com/questions/630453/put-vs-post-in-rest

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值