2

ユーザーは基本的に他のユーザーを友達として追加できます。したがって、別のユーザー リソースを作成するのではなく、2 つのリソースをリンクします。

質問

  1. これを処理するための最良の戦略は何ですか?
  2. この場合に適切な動詞は何ですか?

LINK適切だと思われる動詞があると聞きました。

PATCHまた、動詞を使用してリソースにパッチを適用できることも読みました。
もしそうなら、私はこのようにすることができます

PATCH /users/{id}/friends
4

2 に答える 2

3

新しいオブジェクトを作成することを検討してください。

オブジェクト分離する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よりも「ア」として見栄えがします。PATCHPUT

于 2012-09-14T15:25:08.110 に答える
0

「リソースをリンクする」とは、実際には「あるリソースを更新して別のリソースへのリンクを含める」ことを意味します。

つまり、リソース B への新しい参照を含む新しい表現を使用して、リソース A に PUT または POST を発行する必要があります。

双方向の関係の場合、リソース A で PUT/POST を実行することにより、次にリソース B を取得するときに A への参照も含まれているはずです。

于 2012-09-14T14:58:31.300 に答える