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"
  }
}
  • Pro易于阅读
  • 骗局我们需要多个类/模型(Person、Personia、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"
}
  • Pro我们只需要 1 节课
  • Con它的可读性/结构化程度较低,尤其是对于具有更多数据的类

这当然是一个相当简单的示例,但是对于更复杂的类,问题仍然存在。

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 回答