1

MVC 4 で API コントローラーを試していますが、put を使用してオブジェクトを更新するときのベスト プラクティスについて質問があります。

RavenDB をデータ ストレージとして使用しており、json を動的オブジェクトにシリアル化および逆シリアル化できる JsonDynamicConverter 型のコンバーターを持つカスタム MediaTypeFormatter を作成しました。そうは言っても、私のAPIコントローラーPutメソッドは次のようになります

 public void Put(string id, dynamic model) {}

この動的オブジェクトは次のようになります。

pageModel = {
  "id": "pages-2",
  "metadata": {
    "changed": "2012-02-28T17:16:27.323Z"
  },
  "parent": {
    "id": "pages-1",
    "slug": null
  },
  "children": []
}

これまでのところは問題ありませんが、id pages-2 でエンティティを更新する必要があります。UpdateModel は ApiController に存在しないため、私の質問は、これを行うための最良の/推奨される方法は何ですか?

4

2 に答える 2

0

RavenDB を呼び出すだけで、適切な ID を使用してオブジェクトをロードし、その内容を変更して再度永続化できます。

UpdateModel 呼び出しについて心配する必要はありません。ここでは当てはまりません。

モデルに id を含めているため、1 つの潜在的な問題に注意してください。その本文で PUT コマンドをhttp://server/controller/pages-3に送信するとどうなりますか? API をどのように動作させたいかに応じて、おそらく私に悪いリクエスト応答または同様のものを送信する必要があります。

于 2012-02-29T00:15:11.920 に答える
0

パラメータを明示しない理由はありますか? UpdateModel を定義し、それをダイナミックではなくパラメーターとして使用します。その後、検証をモデル化することもできます。

ASP.NET WebApi には、コントローラー メソッドへの入力としての JSON と XML の両方からの変換処理が含まれています。私が見逃しているものがなければ、この場合、カスタムの mediatypeformatter と dynamic の使用の組み合わせは不要になると思います。

于 2013-03-19T13:14:50.573 に答える