RESTFUL服务中POST/PUT/PATCH方法的区别

原创 2013年08月27日 19:41:24

经常会混淆HTTP的POST/PUT方法,因为这两个方法似乎都可以用来创建或更新一个资源。

区别是细微但清楚的:

POST方法用来创建一个子资源,如 /api/users,会在users下面创建一个user,如users/1

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


而PUT方法用来创建一个URI已知的资源,或对已知资源进行完全替换,比如users/1,

因此PUT方法一般会用来更新一个已知资源,除非在创建前,你完全知道自己要创建的对象的URI。


下面是RFC的描述:

The fundamental difference between the POST and PUT requests is reflected in the different meaning of the Request-URI. 
The URI in a POST request identifies the resource that will handle the enclosed entity. 
That resource might be a data-accepting process, a gateway to some other protocol, or a separate entity that accepts annotations. 
In contrast, the URI in a PUT request identifies the entity enclosed with the request -- 
the user agent knows what URI is intended and the server MUST NOT attempt to apply the request to some other resource. 


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



by iefreer

版权声明:本文为博主原创文章,未经博主允许不得转载。

RESTFul中的那些事(2)----如何支持RESTFul的HTTP Patch方法?

们在调用RESTFul服务的时候,有的时候,第三方的服务会提供支持PATCH 操作的方法,在这种情况下,我们如果我们下面的这种方式, 去调用PATCH操作,肯定会返回40X的错误。那么,解决的方案是什...
  • chancein007
  • chancein007
  • 2014年06月13日 17:15
  • 2376

[整理]通过http1.1 GET, POST, PUT, PATCH, DELETE, HEAD, TRACE理解真正的RESTFUL

最早的时候,我们只需要 GET 和 POST 方法,POST 方法的引入也只是为了消除 URL 过长,参数隐藏,上传文件的问题,完全和语义无关。接触到 RESTful 之后,我们开始思考 GET 和 ...
  • caib1109
  • caib1109
  • 2016年05月30日 11:50
  • 4159

RESTful, 说说 http 的 patch method(部分更新或insert)

最早的时候,我们只需要 GET 和 POST 方法,POST 方法的引入也只是为了消除 URL 过长,参数隐藏,上传文件的问题,完全和语义无关。接触到 RESTful 之后,我们开始思考 GET 和 ...
  • qq_16605855
  • qq_16605855
  • 2017年12月25日 15:15
  • 41

restful

HTTP的REST服务简介   REST简介     一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式。”但是在要求详细讲...
  • notOnlyRush
  • notOnlyRush
  • 2017年02月25日 15:10
  • 1741

RESTFul中的那些事(1)---在RESTFul中,HTTP Put和Patch操作的区别?

笔者在用调用Google Calendar和Google Tasks的RESTFul API的时候,遇到了一个特殊的操作,PATCH。那么PATCH操作和PUT操作的区别是什么呢?...
  • chancein007
  • chancein007
  • 2014年06月13日 12:22
  • 3080

RESTFUL服务中POST/PUT/PATCH方法的区别

RESTFUL服务中POST/PUT/PATCH方法的区别
  • cjf1002361126
  • cjf1002361126
  • 2016年10月30日 19:44
  • 751

RESTful API的理解

什么是REST,RESTful API?
  • wangyanchao000
  • wangyanchao000
  • 2017年02月13日 13:49
  • 19793

Restful接口

Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机...
  • qq_32447301
  • qq_32447301
  • 2018年01月09日 20:51
  • 22

Restful风格API中用put还是post做新增操作有什么区别?

这个是华为面试官问我的问题,回来我找了很多资料,想验证这个问题。在回答问题之前,还需要搜集一些基础知识。 一、HTTP协议详解   HTTP是Hyper Text Transfer Proto...
  • chlu113
  • chlu113
  • 2016年07月07日 18:09
  • 9910

RESTful Web 服务四种操作POST/DELETE/PUT/GET

表征状态转移(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。 目前在三种主...
  • miqi770
  • miqi770
  • 2016年06月01日 16:13
  • 3187
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RESTFUL服务中POST/PUT/PATCH方法的区别
举报原因:
原因补充:

(最多只允许输入30个字)