标签: put

REST中的PUT与POST

根据HTTP/1.1规范:

POST方法用来请求原始服务器接受被附在请求由标识的资源的新下属实体Request-URIRequest-Line

换句话说,POST用于创建.

PUT方法请求将所包含的实体存储在提供的实体下Request-URI.如果Request-URI引用已经存在的资源,则封闭的实体应该被视为驻留在源服务器上的实体的修改版本.如果Request-URI未指向现有资源,并且该URI能够被请求用户代理定义为新资源,则源服务器可以使用该URI创建资源.

也就是说,PUT用于创建或更新.

那么,应该使用哪一个来创建资源?或者需要支持两者?

rest post http put

5227
推荐指数
34
解决办法
227万
查看次数

POST和PUT HTTP REQUEST有什么区别?

他们似乎都在向身体内的服务器发送数据,那么是什么让他们与众不同呢?

post http put

751
推荐指数
14
解决办法
59万
查看次数

REST API - PUT与PATCH的实例

首先,一些定义:

PUT在第9.6节RFC 2616中定义:

PUT方法请求将所包含的实体存储在提供的Request-URI下.如果Request-URI引用已经存在的资源,则封闭的实体应该被视为驻留在源服务器上的实体的修改版本.如果Request-URI未指向现有资源,并且该URI能够被请求用户代理定义为新资源,则源服务器可以使用该URI创建资源.

PATCH在RFC 5789中定义:

PATCH方法请求将请求实体中描述的一组更改应用于Request-URI标识的资源.

另外根据RFC 2616第9.1.2节, PUT是幂等的,而PATCH则不是.

现在让我们来看一个真实的例子.当我/users使用数据进行POST {username: 'skwee357', email: 'skwee357@domain.com'}并且服务器能够创建资源时,它将响应201和资源位置(假设/users/1),并且/users/1将返回对GET的任何下一次调用{id: 1, username: 'skwee357', email: 'skwee357@domain.com'}.

现在假设我要修改我的电子邮件.电子邮件修改被视为"一组更改",因此我应该修补/users/1 " 补丁文档 ".在我的情况下,它将是一个json {email: 'skwee357@newdomain.com'}.然后服务器返回200(假设权限正常).这让我想到第一个问题:

  • PATCH不是幂等的.它在RFC 2616和RFC 5789中也这么说.但是如果我发出相同的PATCH请求(使用我的新电子邮件),我将获得相同的资源状态(将我的电子邮件修改为所请求的值).为什么PATCH不是幂等的?

PATCH是一个相对较新的动词(2010年3月引入的RFC),它解决了"修补"或修改一组字段的问题.在引入PATCH之前,每个人都使用PUT来更新资源.但是在引入PATCH之后,让我感到困惑的是当时使用的PUT是什么?这让我想到了第二个(也是主要的)问题:

  • 什么是PUT和PATCH之间的真正区别?我读过PUT可能用于替换特定资源下的整个实体,因此应该发送完整实体(而不是像PATCH一样发送属性集).这种情况的实际用法是什么?您希望何时替换/覆盖特定资源URI下的实体以及为什么不将此类操作视为更新/修补实体?我在PUT中看到的唯一实际用例是在集合上发布PUT,即/users替换整个集合.在引入PATCH之后,在特定实体上发布PUT是没有意义的.我错了吗?

rest json http put http-method

614
推荐指数
8
解决办法
36万
查看次数

538
推荐指数
7
解决办法
48万
查看次数

RESTful"PUT"操作是否应该返回一些东西

我想知道人们对RESTful PUT操作的看法是什么,它在响应体中没有返回任何内容(null).

rest service resources put

403
推荐指数
5
解决办法
19万
查看次数

有没有办法在python中进行HTTP PUT

我需要PUT在python中使用HTTP将一些数据上传到服务器.从我对urllib2文档的简要介绍来看,它只能用于HTTP POST.有没有办法PUT在python中做HTTP ?

python http put

213
推荐指数
8
解决办法
14万
查看次数

PATCH和PUT请求之间的主要区别是什么?

PUT在我的Rails应用程序中使用了一个请求.现在,PATCH浏览器已经实现了一个新的HTTP动词.所以,我想知道PATCHPUT请求之间的主要区别是什么,以及什么时候应该使用其中一个.

patch http put http-verbs

169
推荐指数
7
解决办法
9万
查看次数

如何在HttpURLConnection中发送PUT,DELETE HTTP请求?

我想知道是否可以将PUT,DELETE请求(实际上)发送java.net.HttpURLConnection到基于HTTP的URL.

我已经阅读了很多文章,描述了如何发送GET,POST,TRACE,OPTIONS请求,但我仍然没有找到任何成功执行PUT和DELETE请求的示例代码.

java put httpurlconnection http-delete

131
推荐指数
4
解决办法
25万
查看次数

在PHP中使用cURL的RAW POST

如何使用cURL在PHP中执行RAW POST?

没有任何编码的原始帖子,我的数据存储在一个字符串中.数据应格式如下:

... usual HTTP header ...
Content-Length: 1039
Content-Type: text/plain

89c5fdataasdhf kajshfd akjshfksa hfdkjsa falkjshfsa
ajshd fkjsahfd lkjsahflksahfdlkashfhsadkjfsalhfd
ajshdfhsafiahfiuwhflsf this is just data from a string
more data kjahfdhsakjfhsalkjfdhalksfd
Run Code Online (Sandbox Code Playgroud)

一种选择是手动编写正在发送的整个HTTP标头,但这似乎不太理想.

无论如何,我可以只将选项传递给curl_setopt(),说使用POST,使用text/plain,并从一个$variable?发送原始数据?

php post curl put

114
推荐指数
2
解决办法
16万
查看次数

如何在swift中使用BODY发送POST请求

我正在尝试使用Alamofire快速发布一个关于身体的帖子请求.

我的json身体看起来像:

{
    "IdQuiz" : 102,
    "IdUser" : "iosclient",
    "User" : "iosclient",
    "List":[
        {
        "IdQuestion" : 5,
        "IdProposition": 2,
        "Time" : 32
        },
        {
        "IdQuestion" : 4,
        "IdProposition": 3,
        "Time" : 9
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试let list使用NSDictionnary,它看起来像:

[[Time: 30, IdQuestion: 6510, idProposition: 10], [Time: 30, IdQuestion: 8284, idProposition: 10]]
Run Code Online (Sandbox Code Playgroud)

我使用Alamofire的请求看起来像:

Alamofire.request(.POST, "http://myserver.com", parameters: ["IdQuiz":"102","IdUser":"iOSclient","User":"iOSClient","List":list ], encoding: .JSON)
            .response { request, response, data, error in
            let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding)
                println(dataString)
        }
Run Code Online (Sandbox Code Playgroud)

请求有一个错误,我相信问题是在字典列表,因为如果我提出一个没有列表的请求它工作正常,所以任何想法?


我尝试过建议的解决方案,但我遇到了同样的问题:

 let json = ["List":list,"IdQuiz":"102","IdUser":"iOSclient","UserInformation":"iOSClient"] …
Run Code Online (Sandbox Code Playgroud)

json put swift alamofire

81
推荐指数
7
解决办法
12万
查看次数