我有一个如下的Odata响应结构,
{
"value": [{
"a": "10",
"b": "10",
"c": "10",
"Description": null,
"ExtendedValues": [{
"x1": "val1",
"y1": "val2",
"z1": "val3"
},
{
"x2": "val1",
"y2": "val2",
"z2": "val3"
},
{
"x3": "val1",
"y3": "val2",
"z3": "val3"
},
],
}]
}
我只想知道是否有办法从响应中排除特定节点。对于ex,我需要从响应中排除ExtendedValues。虽然我可以通过使用$ select并提供所有必需的属性来实现。
答案 0 :(得分:1)
有几种方法可以这样做:
1在ConventionModelBuilder中使用IgnoreDataMember。在WebApiConfig.cs
文件
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntityType<Person>().Ignore(p => p.Description);
然后将排除属性Description,但它也将在$ metadata
中消失2您可以通过定义未绑定的函数来返回您喜欢的值,从而使这样的事情发挥作用。请参阅sample
3如果你有很多业务逻辑,你可以尝试RESTier - 一个基于Web API OData构建的框架,使业务逻辑易于实现。在http://odata.github.io/RESTier/可以看到更多内容。您可以按照入门2,实体集过滤器的教程进行操作。但目前,RESTier仍然是预览版。