2

ASP.NET Web Apiでリソースを提供するための最良の方法は何でしょうか?これに関する参考資料やガイドラインはありますか?

たとえば、人がいるとしましょう。

オプション1:

{
  "Personalia": {
    "CitizenServiceNumber": "23443342",
    "FirstName": "John",
    "LastName": "Web",
    "Gender": "Male",
    "DateOfBirth": "1965-02-16",
  },
  "Spouse": {
    "FirstName": "Emily",
    "LastName": "Web",
    "Gender": "Female",
    "DateOfBirth": "1968-02-16"
  },
  "Address": {
    "HouseNumber": "565",
    "Street": "Somewherestreet"
  }
}
  • プロ読みやすい
  • 短所1人の人物を取得/投稿/配置するには、複数のクラス/モデル(Person、Personalia、Spouse、Address)が必要です。

オプション2:

{
    "CitizenServiceNumber": "23443342",
    "FirstName": "John",
    "LastName": "Web",
    "Gender": "Male",
    "DateOfBirth": "1965-02-16",
    "SpouseFirstName": "Emily",
    "SpouseLastName": "Web",
    "SpouseGender": "Female",
    "SpouseDateOfBirth": "1968-02-16",
    "HouseNumber": "565",
    "Street": "Somewherestreet"
}
  • プロ必要なクラスは1つだけです
  • 短所特にデータが多いクラスでは、読みにくく、構造化されていません

これはもちろんかなり単純な例ですが、質問はより複雑なクラスでも同じです。

4

1 に答える 1

3

私は最初のオプションで行きます。オブジェクトがたくさんあることを心配する必要はありません。これらはビューモデルと呼ばれ、まさにこの目的で使用されます。それに加えて、アドレス、人、...などが必要になる可能性のあるAPIの他の部分でそれらのオブジェクトの一部を再利用できます。

このJSON文字列を注意深く見ると、実際には、この構造をマップするためのオブジェクトは必要ありPersonませんPersonaliaSpouse単一のPersonオブジェクトで十分です。

たとえば、APIコントローラーアクションが実行するビューモデルは次のようになります。

public class MyViewModel
{
    public PersonViewModel Personalia { get; set; }
    public PersonViewModel Spouse { get; set; }
    public AddressViewModel Address { get; set; }
}
于 2013-02-16T15:51:20.983 に答える