我正在设计一个 REST API,我想知道处理资源更新的推荐方法是什么。更具体地说,我将允许通过PUT
资源上的 a 进行更新,但我应该在PUT
请求正文中允许什么?
- 总是资源的完整结构?
- 总是资源结构的子部分(改变的)?
- 两者的结合?
例如,获取资源http://example.org/api/v1/dogs/packs/p1
。此资源上的 AGET
将提供以下内容:
Request:
GET http://example.org/api/v1/dogs/packs/p1
Accept: application/xml
Response:
<pack>
<owner>David</owner>
<dogs>
<dog>
<name>Woofer</name>
<breed>Basset Hound</breed>
</dog>
<dog>
<name>Mr. Bones</name>
<breed>Basset Hound</breed>
</dog>
</dogs>
</pack>
假设我想在包中添加一只狗(嗅探巴吉度猎犬),我是否支持:
Request:
PUT http://example.org/api/v1/dogs/packs/p1
<dog>
<name>Sniffers</name>
<breed>Basset Hound</breed>
</dog>
Response:
HTTP/1.1 200 OK
或者
Request:
PUT http://example.org/api/v1/dogs/packs/p1
<pack>
<owner>David</owner>
<dogs>
<dog>
<name>Woofer</name>
<breed>Basset Hound</breed>
</dog>
<dog>
<name>Mr. Bones</name>
<breed>Basset Hound</breed>
</dog>
<dog>
<name>Sniffers</name>
<breed>Basset Hound</breed>
</dog>
</dogs>
</pack>
Response:
HTTP/1.1 200 OK
或两者?如果建议通过结构的子部分支持更新,我将如何处理删除(例如当狗死时)?通过查询参数?