基本的な HATEOAS 原則に準拠した REST API があるとします。Items
に属しUser
ます。
GET /item/13
{
id: 13,
name: 'someItem',
type: 'someType',
_links: [
{
rel: 'user',
href: '/user/42'
}
]
}
ここで、特定のアイテムのユーザーを変更する方法が必要です。PUT または PATCH のいずれかを使用して、その変更を実行するのに適した方法はどれですか?
新しいリンクされたリソースの ID を JSON 本文の単純なプロパティとして設定することにより、新しい関係を確立します。
PATCH /item/13 { userId: 43 }
クライアントにリンク自体を入力として渡すことで、新しい関係を確立します
PATCH /item/13 { _links: [ rel: 'user', href: '/user/43' ] }
私は通常、リンクを、GET 呼び出しから返される、他の形式 (他のリソースへの id:s など) で格納された関係の読み取り専用表現と考えています。POST/PUT/PATCH 呼び出しへの入力としてリンクを使用することは、私にはあまり自然なことではありません。また、リンクが配列であるという事実により、さらに奇妙になります (すべてのリンクを更新できるようにする必要がありますか? 1 つのリンクを更新できますか?)。しかし、さまざまな記事で提案されているのを見てきました。ベストプラクティスはありますか? リンクアプローチを使用する利点は何ですか?