我们正在构建一个Web API,其GET方法返回DTO。我们希望构建它,以便在某些情况下,这些DTO被剥夺了不必要的属性,以控制向下发送到客户端的数据量。例如,当我们返回我们的一个电子邮件DTO时,我们有时希望客户指定它只需要主题,日期和ID而不是电子邮件的正文。当然,在其他情况下,需要电子邮件的正文。
MVC WebApi中最好的方法是什么?我查看了MediaTypeFormatters,但他们似乎专注于数据格式(JSONP,XML)而不是内容。
答案 0 :(得分:0)
听起来像你想要一个自定义的mediatype。
这可以与自定义MediaTypeFormatter结合使用。
例如,您可以定义自己的媒体类型(这是名称的错误示例):
application/vnd.me-shortform
然后,在您的代码中,您可以省略填写电子邮件正文并让默认格式化程序格式化您的结果。
或者您可以编写自己的MediaTypeFormatter(对现有的MediaTypeFormatter进行子类化)并将其注册为自定义媒体类型。
然后,在MediaTypeFormatter中,您可以通过DTO上的属性或类似的东西来决定不需要电子邮件正文,并省略将其作为结果的一部分。
Mark Seeman on Vendor Media Types应该给你一个很好的起点。