2016-08-16 74 views
1

我们正在使用.NET WebAPI开发一些RESTful API。团队试图做出一个设计决策:我们是否总是将WebAPI级别的请求模型和响应模型分开?Web API 2分离请求和响应模型

例如,我们有一个端点暴露的客户资源:

GET api/customers/1返回客户信息(CustomerResponse)

POST api/customers接受客户的信息。 (CustomerRequest)

最初,这两个模型之间的所有字段都是相同的,除了响应包含CustomerID那里不在请求中。

我知道将这两种模式分开将使我们受益于隔离请求/响应,因为它们在未来可能会有所不同。验证仅在请求模型上进行。不过,它也会带来开销,因为我们现在需要维护两个模型。

我在那里找不到任何标准。只是想看看是否有任何推荐的最佳做法。

+1

是的,我一直把它们分开。通常这两者随着时间的推移差异更大。 –

回答

1

我发现将两者分开最简单。如前所述,这两者可能随着时间的推移而发生分歧。例如,发布新资源可能不会有ID,但响应对象会。

通过分离出来,就可以:

  1. 杠杆的API框架模型验证(即容易注释所需要字段和可选)。这将返回一个错误,指定哪个字段丢失。

  2. 利用工具(例如我的最爱之一,Swashbuckle https://github.com/domaindrivendev/Swashbuckle),它可以自动生成来自路线和模型的文档。 如果请求和响应字段捆绑在同一个模型中,则文档看起来不太好。