ここにいる多くの開発者は、 RESTful APIからのGETリクエストがリクエストされたリソースのIDを返す必要があるかどうかについて、友好的な(宗教的と言う人もいます)議論をしています。次のGETリクエストを想定します。
http://my.api.com/rest/users/23
これは現在次を返します:
{"name": "Jim", "age": 40, "favoriteColor": "blue"}
結果セットに「id」がないことに注意してください。
この問題と戦っているキャンプは基本的に4つあります。
キャンプ#1:発信者がGETリクエストを行うとき、彼らはすでにIDを知っています。したがって、結果セットにはIDを含めないでください。呼び出し元がUI編集を有効にするためにこのデータを必要とする場合、呼び出し元はID 23をパススルーする必要があります。おそらく、メンバー{"id":23}をJSONに手動で追加します。
キャンプ#1の人々はまた、結果セットにIDが存在することは、この値が変更可能であることを示していると主張していますが、もちろん変更できません。
キャンプ#2: IDがないと、JSON結果セットをUIフォームの編集/更新操作にネイティブに使用できません。代わりに、AJAXコールバックメカニズムがIDフィールドを渡し、手動で結果セットに追加する必要があります。これは扱いにくく、エラーが発生しやすいようです。UI担当者は、結果セットが存在するはずのデータ、つまりIDが欠落しているように「感じる」と主張しています。
キャンプ#3:これらの人々は一貫性を心配しています。APIによって返されるユーザーオブジェクトのコレクションがある場合、これらのオブジェクトにはIDが含まれている必要があります。したがって、一貫性を保つために、シングルトンバージョンのGETにはIDも含める必要があります。
キャンプ#4:これらの人々は、ユーザーのGETリクエストが、IDを含むハイパーメディアまたはSelfLinksの形式でメタデータを返す可能性があることを示唆しています。
これは難解な「Who'sRight?」ではありません。どちらか。私たちが採用するアプローチは、APIの形状を決定し、新しい数週間にわたる複数の開発者の作業負荷に影響を与えます。