従業員レコードを更新しているとします
url -/api/employees/10
体 -
{
id : 10,
name : xyz
}
URLの従業員IDが応答と同じであることを検証する必要がありますか? ある従業員は自分で URL にアクセスできますが、PUT 本文で別の値を送信することにより、別の従業員のデータを更新できます。
はい、ボディ内のオブジェクトの表現に独自のキーが含まれている場合は、それが URL のキーと一致することを検証する必要があります。クライアントが従業員 #10 のレコードの有効な値ではないオブジェクトを PUT しようとするとエラーになるため/api/employees/10
、オブジェクトの構文が正しいことを確認するのと同じように、それを確認してエラーとして報告する必要があります。
この場合に返される最良のエラー コードは422 Unprocessable Entityだと思いますが、それについては間違っている可能性があります。
代わりにできるもう1つのことは、本文にキーをまったく含めないことです。ただし、キーを保持することは、同じタイプのオブジェクトが API の他の部分 (おそらく他のオブジェクト内に埋め込まれている) で表現される方法との一貫性のために意味があることがわかりました。これは、XML を使用する場合に特に当てはまります (ここでは JSON を使用しているように見えますが)。
検証する必要がある場合は、POST を使用する可能性があります。POST はべき等ではなく、変更を管理する必要があります。
PUT はべき等であり、リソースを作成するだけです。これは、ID 10 が何であるか、それが新しい ID であるか既存の ID であるかを実際には気にしないことを意味します。id 10 を提供するリソースに置き換えるだけです。uri がどうあるべきかがわかっている場合にのみ、PUT を使用します。