2

FooEnityWeb サービスによって公開された ID が 35 の があり、それが にあるとします/myhost/api/fooentity/35

ここで、部分的な更新を許可する PATCH 呼び出しを実装したいと思いますFooEntity(つまり、25 の利用可能なフィールドのうち 2 つが更新のために渡されるとしましょう)。

私の質問は、PATCH コンテンツ (json/xml) にidof 35 を含める必要があるかどうかです。エンティティのアドレスは URI で指定され、id更新可能なフィールドではありません。含まれている場合は、両方の ID が一致することを確認する追加の検証になります。これはすべていいえを示唆しています。それでも、そこにそれがないのは奇妙に感じます。

これを行う適切な方法は何ですか?

(注: 質問は言語に依存しませんが、誰かの回答に影響する場合は、ASP.NET 4.0 Web API フレームワークに実装されています)。

4

1 に答える 1

2

それは素晴らしい質問です!

それを処理するには2つの方法があります。本文の ID が URI の ID と異なる場合は、検証エラーを発生させることができます。または、リクエスト本文に含まれる ID を無視することもできます。プロパティを手動でコピーしてパッチを適用する場合、id プロパティをコピーして無視することはできません。ヘルパー クラスを使用してエンティティにパッチを適用している場合は、パッチを適用してから、エンティティの ID を URI で受信したものに設定して、パッチ後も同じ ID を保持するようにすることができます。

どちらのオプションを選択するかは、本当にあなた次第です。リクエスト ボディ ID がエンティティ ID と一致しない場合に 400 を送り返すことは、クライアントにとって少し明確になる可能性があるため、クライアントは ID が変更されないことを理解できますが、実装するコードをさらに記述する必要もあります。

于 2013-02-15T16:02:41.157 に答える