内容协商可以用于控制ASP.NET WebApi中的返回类型吗?

时间:2012-07-06 20:46:18

标签: asp.net-web-api

我们正在构建一个Web API,其GET方法返回DTO。我们希望构建它,以便在某些情况下,这些DTO被剥夺了不必要的属性,以控制向下发送到客户端的数据量。例如,当我们返回我们的一个电子邮件DTO时,我们有时希望客户指定它只需要主题,日期和ID而不是电子邮件的正文。当然,在其他情况下,需要电子邮件的正文。

MVC WebApi中最好的方法是什么?我查看了MediaTypeFormatters,但他们似乎专注于数据格式(JSONP,XML)而不是内容。

1 个答案:

答案 0 :(得分:0)

听起来像你想要一个自定义的mediatype。

这可以与自定义MediaTypeFormatter结合使用。

例如,您可以定义自己的媒体类型(这是名称的错误示例):

application/vnd.me-shortform

然后,在您的代码中,您可以省略填写电子邮件正文并让默认格式化程序格式化您的结果。

或者您可以编写自己的MediaTypeFormatter(对现有的MediaTypeFormatter进行子类化)并将其注册为自定义媒体类型。

然后,在MediaTypeFormatter中,您可以通过DTO上的属性或类似的东西来决定不需要电子邮件正文,并省略将其作为结果的一部分。

Mark Seeman on Vendor Media Types应该给你一个很好的起点。