【发布时间】:2014-03-05 08:02:31
【问题描述】:
我在设计 API 的 JSON 响应模型方面需要帮助。
假设getUsers 调用返回以下响应模型:
{
"users":
[
{
"userId": "1",
"name": "Joe Soap",
"companyId": "3"
},
{
"userId": "2",
"name": "Bob Jones",
"companyId": "3"
},
{
"userId": "3",
"name": "Mary Jane",
"companyId": "4"
},
]
}
现在我们有另一个电话,比如说getUsersWithCompany。这包括公司信息。我的问题是:
我应该将这个额外的company 数据包含到每个user 中还是应该是响应模型中的全新companies 列表?
方案一:结合用户和公司
{
"usersWithCompany":
[
{
"userId": "1",
"name": "Joe Soap",
"company":
{
"companyId": "3",
"companyName": "Some Company Ltd",
"contactNumber": "123123123"
},
},
{
"userId": "2",
"name": "Mary Jane",
"company":
{
"companyId": "4",
"companyName": "Another Company Ltd",
"contactNumber": "463463383"
},
}
]
}
优势:当模型被使用时,这可能会更容易,因为在遍历用户列表时公司数据可用。
解决方案 2:用户和公司的单独列表
{
"users":
[
{
"userId": "1",
"name": "Joe Soap",
"companyId": "3"
},
{
"userId": "2",
"name": "Bob Jones",
"companyId": "3"
},
{
"userId": "3",
"name": "Mary Jane",
"companyId": "4"
},
],
"companies":
[
{
"companyId": "3",
"companyName": "Some Company Ltd",
"contactNumber": "123123123"
},
{
"companyId": "4",
"companyName": "Another Company Ltd",
"contactNumber": "463463383"
},
],
}
优势:这可确保用户和公司项目在调用过程中始终保持一致。消费者的品种较少。
我们正在使用 .NET Web Api 2。
【问题讨论】:
-
这与 ASP 和 .NET 有什么关系?
-
如果您指的是
asp.net-web-api标签,那是因为我们正在使用该技术。 -
但是您不会在问题的任何地方使用这些技术。事实上,您的问题与每个 RESTful 系统有关。
标签: json web-services rest asp.net-web-api json.net