web-dev-qa-db-ja.com

RESTモデルでリソースをネストする適切な方法は何ですか?

RESTサービスのAPIを設計していて、リソースをネストする適切な方法で立ち往生しています。

リソース:パートナー、チケット、設定

リソース間の接続:

  • パートナーはたくさんのチケットを持っています、
  • パートナーには一連の設定があり、

タマンロジック:

  • すべてのパートナーを匿名ユーザーとしてリストできます
  • 指定したパートナーに新しいチケットを匿名ユーザーとして追加できます。
  • パートナーのみがチケットをリストできます。
  • パートナーのみがチケットを変更できます。
  • パートナーだけが設定をリストできます
  • パートナーのみが設定を変更できます

私が今までにしたこと:

パートナーリソース

GET/partners-すべてのパートナーを一覧表示します
GET/partners /:id-:idパラメータで指定されたパートナーの詳細を表示します
GET/partners /:partner_id/tickets-パートナーのチケットのリスト
GET/partners /:partner_id/tickets /:id-指定されたパートナーのチケットの詳細
POST/partners /:partner_id/tickets-新しいチケットを保存します
PUT/partners /:partner_id/tickets /:id-:idパラメータで指定されたチケットを更新します
GET/partners /:partner_id/settings-パートナーの設定を一覧表示します
PUT/partners /:partner_id/settings-パートナーの設定を更新します

問題/質問

ネストされたリソース(チケット、設定)を分割してリソースを分離する、またはそれらを別個のリソースとして複製するのは適切な方法でしょうか?

例えば。

GET/tickets /:id
POST /チケット
PUT/tickets /:id

GET /設定
PUT /設定

14
Przemek

[〜#〜] hateoas [〜#〜]

GET /partners/:partner_id/tickets-パートナーのチケットのリスト、つまり、おそらく/tickets/:idの形式のURIのリストを返します

GET /partners/:partner_id/tickets/:id-不要

POST /partners/:partner_id/tickets-チケットを作成してパートナーに関連付け、新しいURIを持つ201を/tickets/:idの形式で返します

8
Javier