私はRESTAPIを設計していますが、リソースの更新を処理するための推奨される方法は何でしょうか。具体的には、リソースでの更新を許可しますが、リクエストPUT
の本文で何を許可する必要がありますか?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>
犬(Sniffers the Basset Hound)をパックに追加したい場合、次のいずれかをサポートしますか?
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
または両方?構造のサブセクションを通じて更新をサポートすることが推奨されている場合、削除(犬が死亡したときなど)をどのように処理しますか?クエリパラメータを介して?