1. ホーム
  2. rest

[解決済み] REST - ボディにIDを入れるかどうか?

2022-06-04 08:36:18

質問

クライアントがIDを割り当てることができる、人々のためのRESTfulなリソースを持ちたいとします。

人物はこんな感じです。 {"id": <UUID>, "name": "Jimmy"}

さて、クライアントはこれをどのように保存(または "PUT")すべきでしょうか?

  1. PUT /person/UUID {"id": <UUID>, "name": "Jimmy"} - このように、常に検証しなければならない重複があります。body の ID は path の ID と一致するか?
  2. 非対称な表現。
    • PUT /person/UUID {"name": "Jimmy"}
    • GET /person/UUID リターン {"id": <UUID>, "name": "Jimmy"}
  3. ボディにIDがない - ロケーションにのみIDがある。
    • PUT /person/UUID {"name": "Jimmy"}
    • GET /person/UUID リターン {"name": "Jimmy"}
  4. 種類はありません POST は、IDがクライアントによって生成されるため、良いアイデアだと思われます。

よくあるパターンと解決方法は?位置情報のみのIDは、最も独断的に正しい方法のように思えますが、現実的な実装も難しくなってしまいます。

どのように解決するのか?

クライアントはあるリソース表現を書くことができ、その後、サーバーは追加/計算された要素を含む別の表現を返すことができます(あるいはまったく別の表現でもかまいません。)

ですから、私は(2)の非対称的な解決策を取り、書き込み時にサーバー側で"厄介な重複チェック"を避けることにします。

PUT /person/UUID {"name": "Jimmy"}

GET /person/UUID returns {"id": <UUID>, "name": "Jimmy"}