ユーザーは基本的に他のユーザーを友達として追加できます。したがって、別のユーザー リソースを作成するのではなく、2 つのリソースをリンクします。
質問
- これを処理するための最良の戦略は何ですか?
- この場合に適切な動詞は何ですか?
LINK
適切だと思われる動詞があると聞きました。
PATCH
また、動詞を使用してリソースにパッチを適用できることも読みました。
もしそうなら、私はこのようにすることができます
PATCH /users/{id}/friends
ユーザーは基本的に他のユーザーを友達として追加できます。したがって、別のユーザー リソースを作成するのではなく、2 つのリソースをリンクします。
質問
LINK
適切だと思われる動詞があると聞きました。
PATCH
また、動詞を使用してリソースにパッチを適用できることも読みました。
もしそうなら、私はこのようにすることができます
PATCH /users/{id}/friends
新しいオブジェクトを作成することを検討してください。
オブジェクトを分離するfriendship
と、ユーザーを更新せずにオブジェクトを作成および変更できます。各フレンドシップには 2 つのユーザー キーがあります。「以来の友達」の価値など、友情に関する追加情報を掛けるのにも最適な場所です。
POST /friendships
{
primaryUser: 43,
secondaryUser: 3
since: "03/16/2010"
}
201 CREATED
location: /friendships/635
次に、ユーザー 43 へのクエリを記述して、ユーザー ID、フレンドシップ ID、または埋め込みオブジェクトのいずれかの配列を含めることができます。
GET /users/43
200 SUCCESS
{
id: 43,
name: "john",
friends: [3]
}
または
200 SUCCESS
{
id: 43,
name: "john",
friends: [635]
}
また
200 SUCCESS
{
id: 43,
name: "john",
friends: [
{
id: 635,
primaryUser: 43,
secondaryUser: 3,
since: "03/16/2010"
}
]
}
更新/削除のセマンティクスは、はるかに単純です。友情を「削除」することは、「またはイモ」DELETE
よりも「ア」として見栄えがします。PATCH
PUT
「リソースをリンクする」とは、実際には「あるリソースを更新して別のリソースへのリンクを含める」ことを意味します。
つまり、リソース B への新しい参照を含む新しい表現を使用して、リソース A に PUT または POST を発行する必要があります。
双方向の関係の場合、リソース A で PUT/POST を実行することにより、次にリソース B を取得するときに A への参照も含まれているはずです。