可查询的Web API 2 OData序列化

时间:2014-02-15 23:34:08

标签: asp.net-web-api json.net odata asp.net-web-api2

我有一个轻量级的设置,我使用的是带有OData的Web API 2但不创建带有“/ odata / $ metadata”的“/ odata”端点,而只是使用带有属性路由的标准ApiController和标记的Get方法覆盖[可查询]:[InlineCountQueryable]详细信息Web API, OData, $inlinecount and testing

除了我只能暴露没有任何集合或对象属性的专用模型类之外,它一切都很好,因为JSON序列化程序序列化了整个对象图。我理想的行为是完全忽略所有集合,并且仅在$ expand中包含对象属性。

我相信这可以起作用,因为OData Web Api 2脚手架VS 2013创建了一个实体框架上下文有类似的行为,但我想尽可能地保持这种倾向并避免走这条路线,因为我发现它有点脆弱,这个服务不需要公开$元数据描述。

更新

我在aspnet示例中进行了一些挖掘并发现了“CustomODataFormatter”示例,它似乎暴露了我需要修改的机制..但是那里概述的ODataSerializerProvider / ODataSerializer设置根本不适用于属性路由(任何用[Route(“Some / Url”)])定义的方法。

鉴于这似乎是我需要的,有没有人知道属性路由和odata序列化器提供程序机制是否应该一起工作?

1 个答案:

答案 0 :(得分:0)

[JsonIgnore] or [DataMember]可用于忽略json.net序列化程序的属性。 webapi.odata 5.2支持ODataRouteAttribute,例如here