在ASP.NET Web API中限制返回的JSON子深度

时间:2016-03-09 14:43:33

标签: c# asp.net json api asp.net-web-api

我使用ASP.NET Web API创建RESTful API。我试图找出限制子对象显示的数据量的最佳方法。

为了解释,我有三个实体,对象,通道和ChannelData。一个对象可以有0个或更多个Channel,一个Channel可以有0个或更多ChannelData(通常是1000个)。

我想要以下端点:

  • /api/Objects

    • 返回JSON对象及其频道列表,但 ChannelData(可能是摘要数据,例如数据量等)。
  • /api/Objects/{{objectId}}/ChannelData?channel={{channelName}}

    • 返回特定对象的特定频道的JSON中的所有数据。

默认情况下,Web API会尝试在/ api / Objects中显示所有内容,包括1000个ChannelData对象。阻止ChannelData数组出现在特定端点的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

实际上,实现这一目标的最佳方法是“不加载数据”#34;您还可以考虑使用其他模型更改方法的响应。

无论如何,如果您无法做任何事情,可以尝试在ChannelData属性上使用此标记my_mesh.BeginPolygon() my_mesh.AddPolygon(0) my_mesh.AddPolygon(n) ... my_mesh.EndPolygon() (如果您使用xml格式化程序,则使用[JsonIgnore]);序列化引擎将在响应生成期间跳过该属性。

查看this文章或this文章了解更多详情或this SO回答。