0


安らかな URL をいくつか設計していますが、ドメインのエンティティを取得する方法がわかりません。
下位レベルには、多対多および 1 対多の関係を持つデータベースがあります。
エンティティが会社、グループ、およびユーザーであるとします。
企業とグループの関係は 1 対多 (グループの外部キー) であり、企業とユーザーの間でも同じです。
一方、グループとユーザーの間の関係は多対 5 です。

Restful API に関する私の知識では、次のような URL を作成する必要があります。

  • http://mywebsite.com/company/http://mywebsite.com/company/1/users/http://mywebsite.com/company/1/groups/post (新しいエンティティの作成) および get メソッド用。
  • http://mywebsite.com/company/1http://mywebsite.com/company/1/users/1http://mywebsite.com/company/1/groups/1put (更新)、delete および get メソッド用。
  • http://mywebsite.com/company/1/users/1/groups/投稿用 (新しい関連付けを追加) と get メソッド。


さて、私の問題は、ユーザーまたはグループから読み取る(取得する)、(そして最終的に更新する(置く)、または会社を変更する(投稿する)方法です。
基本的に 3 つのオプションがあります。

  1. http://mywebsite.com/company/1/users/1/company同じjsonとxmlを提供し、..http://mywebsite.com/company/1のような繰り返しのURLを拒否します.http://mywebsite.com/company/1/users/1/company/1/users
  2. ユーザーの説明 (またはグループ) の json と xml の中に入れ子にする 自分の会社の json と xml の入れ子部分は とほぼ同じになり http://mywebsite.com/company/1ます。ただし、このオプションは、ユーザー (またはグループ) の要求ごとに 2 つのテーブル間の結合を意味します。ユーザーの名前のみを知りたい場合でも、
  3. ユーザーとグループの json と xml で外部キー値 (会社の識別子) のみを提供します。
あなたにとって最良の選択肢は何ですか?なんで?

4

1 に答える 1

0

私なら、よりフラットな URL と操作を選択します。具体的には:


読み取り操作

  • GET /company?id={id}
    • 指定された会社を取得しますid
  • GET /company/group?id={id}
    • 指定された会社に関連付けられているグループを取得しますid
    • ページネーション用の追加のクエリ パラメータを追加します (該当する場合)。
  • GET /company/user?id={id}
    • 指定された会社に関連付けられているユーザーを取得しますid
    • ページネーション用の追加のクエリ パラメータを追加します (該当する場合)。
  • GET /group?id={id}
    • 指定されたグループを取得しますid
  • GET /group/user?id={id}
    • 指定されたグループに関連付けられているユーザーを取得しますid
    • ページネーション用の追加のクエリ パラメータを追加します (該当する場合)。
  • GET /user?id={id}
    • 指定されたユーザーを取得しますid
  • GET /user/group?id={id}
    • 指定されたユーザーに関連付けられたグループを取得しますid
    • ページネーション用の追加のクエリ パラメータを追加します (該当する場合)。

操作を追加

  • POST /company
    • 新しい会社を作る
    • id応答して新しい会社を返す
  • POST /group
    • 新しいグループを作成する
    • すべてのグループには関連する会社が必要であるため、関連する会社は投稿の JSON/XML 本文の必須フィールドです。
    • id応答で新しいグループを返す
    • すべてのグループには会社が関連付けられている必要があるため、これにより会社とグループの接続も作成されます。
  • POST /user
    • 新しい新しいユーザーを作成する
    • すべてのユーザーは関連する会社を持っている必要があるため、関連する会社は投稿の JSON/XML 本文の必須フィールドです。
    • id応答で新しいユーザーを返す
    • すべてのユーザーには会社が関連付けられている必要があるため、会社とユーザーの接続も作成されます。
  • PUT /user/group?id={id}
    • 指定されたグループのコレクションをユーザーに関連付けますid
  • PUT /group/user?id={id}
    • 指定されたグループにユーザーのコレクションを関連付けますid

削除操作

  • DELETE /company?id={id}
    • 指定された会社を削除しますid
    • 関連付けられたユーザーおよびグループに削除をカスケードするか、存在する場合は削除をブロックできます
  • DELETE /group?id={id}
    • 指定されたグループを削除しますid
    • 関連する会社グループ接続も削除します
    • 関連付けられているユーザーは削除されません。ユーザー グループのリンクが削除されるだけです。
  • DELETE /user?id={id}
    • 指定されたユーザーを削除しますid
    • 関連する会社とユーザーの接続も削除します
    • 関連付けられたグループは削除されません。ユーザー グループ リンクが削除されるだけです。
  • DELETE /user/group?id={id}
    • 指定されたユーザーからグループのコレクションの関連付けを解除しますid
  • DELETE /group/user?id={id}
    • 指定されたグループからユーザーのコレクションの関連付けを解除しますid

不明な点がある場合は、コメントでお知らせください。明確にすることができます。

于 2013-04-08T03:25:34.107 に答える