我想知道人们对在响应体中不返回任何(null)的RESTful PUT操作有什么看法。
当前回答
HTTP/1.1规范(第9.6节)讨论了适当的响应/错误代码。但是,它不处理响应内容。
你想要什么?一个简单的HTTP响应代码(200等)对我来说似乎是直接而明确的。
其他回答
我同意上面投票最多的答案,但我想更详细地说明这一点。
REST不是一个标准,因此每个人都可以创建和记录自己的API,只要它符合目的,并且得到了良好的文档记录,得到了开发人员和消费者的同意和理解。 真正重要的是url标识了公开的资源。 我已经使用Http Rest api很多年了,我想分享我通常使用的标准方法,不是因为它是完美的,或者“行为规则”,只是因为我发现它很容易使用并向他人解释。
请注意,我没有提到超媒体,因为这远远超出了回答的目的,我宁愿把它放在范围之外,但如果有兴趣,可以在OData规范中找到一份不错的阅读材料。
Create
---------------------------------------------------------------------
Success - 201 Created - Return created object
Failure - 400 Invalid request - Return details about the failure
Async fire and forget operation - 202 Accepted - Optionally return url for polling status
Update
---------------------------------------------------------------------
Success - 200 Ok - Return the updated object
Success - 204 NoContent
Failure - 404 NotFound - The targeted entity identifier does not exist
Failure - 400 Invalid request - Return details about the failure
Async fire and forget operation - 202 Accepted - Optionally return url for polling status
Patch
---------------------------------------------------------------------
Success - 200 Ok - Return the patched object
Success - 204 NoContent
Failure - 404 NotFound - The targeted entity identifier does not exist
Failure - 400 Invalid request - Return details about the failure
Async fire and forget operation - 202 Accepted - Optionally return url for polling status
Delete
---------------------------------------------------------------------
Success - 200 Ok - No content
Success - 200 Ok - When element attempting to be deleted does not exist
Async fire and forget operation - 202 Accepted - Optionally return url for polling status
Get
---------------------------------------------------------------------
Success - 200 Ok - With the list of resulting entities matching the search criteria
Success - 200 Ok - With an empty array
Get specific
---------------------------------------------------------------------
Success - 200 Ok - The entity matching the identifier specified is returned as content
Failure - 404 NotFound - No content
Action
---------------------------------------------------------------------
Success - 200 Ok - Return content where appropriate
Success - 204 NoContent
Failure - 400 - Return details about the failure
Async fire and forget operation - 202 Accepted - Optionally return url for polling status
Generic results
---------------------------------------------------------------------
Authorization error 401 Unauthorized
Authentication error 403 Forbidden
For methods not supported 405
Generic server error 500
我在我的服务中使用了RESTful API,以下是我的观点: 首先,我们必须了解一个通用视图:PUT用于更新资源,而不是创建或获取资源。
我用:无状态资源和有状态资源来定义资源:
无状态的资源 对于这些资源,只返回带有空主体的HttpCode就足够了。 有状态资源 例如:资源的版本。对于这类资源,当您想要更改它时,您必须提供版本,因此返回完整的资源或将版本返回给客户端,因此客户端在更新操作后不需要发送get请求。
但是,对于服务或系统来说,最重要的是保持简单、清晰、易于使用和维护。
HTTP/1.1规范(第9.6节)讨论了适当的响应/错误代码。但是,它不处理响应内容。
你想要什么?一个简单的HTTP响应代码(200等)对我来说似乎是直接而明确的。
Http方法“PUT”可能具有不同的Http状态,根据传递的请求- uri的执行状态。下表可能有助于理解-
“Created”的Http响应代码201以及指向客户端可以找到新创建资源的“Location”标头。
推荐文章
- PATCH和PUT请求的主要区别是什么?
- 调用webrequest, POST参数
- 如何在Spring RestTemplate请求上设置“接受:”头?
- REST API最佳实践:查询字符串中的参数vs请求体中的参数
- Java中SOAP和rest式web服务的主要区别
- Android Scala编程
- 如何为Java创建REST客户端?
- Android 8.1升级后start前台失败
- file_get_contents(): SSL operation failed with code 1, failed to enable crypto
- 在HttpClient和WebClient之间进行选择
- 执行没有实体主体的HTTP POST被认为是不好的做法吗?
- JavaScript/jQuery下载文件通过POST与JSON数据
- 如何检查位置服务是否已启用?
- 基于Spring的RESTful认证
- 在Java中读取资源文本文件到字符串