为了尊重REST原则的最佳实践,最好是在POST/PUT上返回创建/更新的实体吗?或者使用Location标头返回一个空的HTTP主体?
更确切地说,当POST创建资源时,我们应该返回:
状态201 +位置标题+(HTTP正文中创建的实体)?
或状态201 +位置标题+(空体)?
当资源由PUT更新时,我们应该返回:
状态200 +(HTTP正文中更新的实体)?
或状态204(空体)?
Robert Harve.. 10
研究其他人的API以了解他们是如何做到这一点可能是有益的.大多数有用的公共API都在Web上的某个地方发布.
例如,Overmind项目在此发布其REST API .通常,他们的方法是返回包含新的或修改的实体ID及其所有属性的JSON字典:
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的API能够返回XML或JSON.当出现问题时,Twilio会在HTTP响应正文中返回异常.在XML中,它们作为
元素出现在
通常,我可以看到在PUT或POST上返回对象是有用的,因为它将包含对对象属性的任何修改(例如默认值).
研究其他人的API以了解他们是如何做到这一点可能是有益的.大多数有用的公共API都在Web上的某个地方发布.
例如,Overmind项目在此发布其REST API .通常,他们的方法是返回包含新的或修改的实体ID及其所有属性的JSON字典:
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的API能够返回XML或JSON.当出现问题时,Twilio会在HTTP响应正文中返回异常.在XML中,它们作为<RestException>
元素出现在<TwilioResponse>
通常,我可以看到在PUT或POST上返回对象是有用的,因为它将包含对对象属性的任何修改(例如默认值).