1

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

MVC WebApi 中执行此操作的最佳方法是什么?我研究了 MediaTypeFormatters,但他们似乎专注于数据的格式(JSONP、XML)而不是内容。

4

1 回答 1

0

在我看来,你想要一个自定义的媒体类型。

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

例如,您可以定义自己的媒体类型(这是一个不好的名称示例):

application/vnd.me-shortform

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

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

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

供应商媒体类型上的 Mark Seeman应该给你一个很好的起点。

于 2012-07-30T14:40:22.583 回答