为了尊重REST原则的最佳实践,最好是在POST / PUT上返回创建/更新的实体吗?或者使用Location标头返回一个空的HTTP主体?
更准确地说,当POST创建资源时,我们应该返回:
当PUT更新资源时,我们应该返回:
答案 0 :(得分:9)
研究其他人的API以了解他们是如何做到这一点可能是有益的。大多数有用的公共API都在网上的某个地方发布。
例如,Overmind项目发布他们的REST API here。通常,他们的方法是返回一个JSON字典,其中包含新的或修改过的实体ID及其所有属性:
Operation HTTP Method URL Query string
-------------------------- ----------- --- ------------
Create node for a specific
provider POST /api/nodes/ provider_id=PROVIDER_ID
HTTP Payload returned
---------------------
JSON dict with id of node created (generated on the server side) and all other
attributes of the node
Twilio's API能够返回XML或JSON。当出现问题时,Twilio会在HTTP响应正文中返回异常。在XML中,这些在<RestException>
<TwilioResponse>
元素
通常,我可以看到在PUT或POST上返回对象是有用的,因为它将包含对对象属性的任何修改(例如默认值)。