从ASP.NET Web API返回一些字段

Vik*_*tor 6 asp.net-mvc json.net asp.net-mvc-4 asp.net-web-api

如果我只想从模型中返回一些字段,我应该使用什么方法?我希望能够提出一些字段,如下所示:

?场=电子邮件,到期日期,化身(thumb_width,thumb_height,thumb_url)

此表达式也可以是请求中的标头.我也有嵌套对象,比如User中的Avatar.

这将节省我数百MB的流量,因为我的一些模型非常重.

更新:字段选择应该与Json和XML响应一起使用.

Ale*_*lex 6

我找到了一个为你做这个的nuget包

WebApi.PartialResponse

Git hub源代码:https:
//github.com/dotarj/PartialResponse

它基本上包装了上面讨论的格式化程序,因此您只需要像这样配置它:

GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new PartialJsonMediaTypeFormatter() { IgnoreCase = true });
Run Code Online (Sandbox Code Playgroud)

然后,您可以?fields=<whatever>在请求中指定,它将返回仅包含指定字段的模型.


Bet*_*tty 2

我将用自定义解析器替换默认的合同解析器(请参阅http://frankapi.wordpress.com/2012/09/09/going-camelcase-in-asp-net-mvc-web-api/),覆盖 GetSerializedMembers Newtonsoft.Json.Serialization.DefaultContractResolver 类中的方法,并使用查询字符串字段的值过滤其结果。

是否可以从该类访问查询字符串是另一个问题,您也许可以使用静态 httpcontext.current 来获取它,但可能有一个更干净的选项。