Rest PUT的HTTP状态代码
一个Rest PUT的HTTP状态代码,rest,http,Rest,Http,一个PUT请求可能会有很多结果,我想知道哪种状态代码最适合每个请求 假设我想创建一个新的资源,我会这样做: PUT http://example.com/resources/resource-1 我会得到一个http201,因为已经创建了一个新的资源 现在我想更新此资源,因此我使用新内容执行相同的请求: PUT http://example.com/resources/resource-1 我得到了http200或http204,因为资源已经更新了。但是如果我用同样的内容再次发送这个请求呢?
PUT
请求可能会有很多结果,我想知道哪种状态代码最适合每个请求
假设我想创建一个新的资源,我会这样做:
PUT http://example.com/resources/resource-1
我会得到一个http201
,因为已经创建了一个新的资源
现在我想更新此资源,因此我使用新内容执行相同的请求:
PUT http://example.com/resources/resource-1
我得到了http200
或http204
,因为资源已经更新了。但是如果我用同样的内容再次发送这个请求呢?即使未更新任何内容,服务器是否应返回HTTP 200
或HTTP 204
我知道http200
和http204
都意味着请求被成功处理,即使数据没有改变,请求仍然可以(而且应该)被成功处理。但是有没有一种方法可以告诉客户机请求已成功处理,但服务器端没有任何更改?如果有,它是否应该用于PUT
请求PUT
是幂等的,是否应根据服务器端的实际处理返回不同的状态(只要在此处理过程中没有发生错误)
但是有没有一种方法可以告诉客户机请求已成功处理,但服务器端没有任何更改
是的,但那不是状态码的用途
返回200 OK和实体的表示,或204 No Content和NOUTH
对于未应用的更改,请使用类似ETag的标题。客户端可以将ETag与其以前的值进行比较,并确定没有任何更改。如果资源在第一个PUT请求中返回201,但在后续请求中返回200或204,这是否不违反幂等性(PUT所需)@Ray no,因为幂等性与服务器上的结果有关,或者更具体地说,是由请求URL标识的资源的字节内容,而不是响应消息的内容。服务器上的结果在相同资源的连续PUT上不会更改。:)请参见示例:。啊。。。谢谢你的澄清,这是完全有意义的。补充:这篇文章中的答案非常有用。