フィールド「id」と「name」を持つ単純な「Person」テーブルを含む JAX-RS API を開発しています。「id」は mysql データベースの自動番号に関連付けられています。典型的な使用例は、新しい人を POST することです。
JSON メッセージの POST は、{"name":"Bob"}
たとえば、{"id":101,"name":"Bob"}
.
発信者が識別子を含むオブジェクトの POST を要求した場合はどうなるでしょうか? 私のオプションは次のとおりです。
- リクエストを無効として拒否する
- リクエストから ID を削除し、処理を続行します
- POST を UPSERT のように扱う (更新が失敗した場合、ID を削除して挿入する)
- 提供された ID を使用して新しいレコードの作成を試みます
最後のオプションは、セキュリティの観点から危険に思えます。mysql を使用している場合、悪意のあるユーザーが 1 回のリクエストで自動番号を最大値まで上げることができます。
POST リクエストに ID を含めることは、REST API でどのように処理する必要がありますか?