rac*_*cow 9 asp.net odata asp.net-mvc-4 asp.net-web-api
我正在尝试使用新的WebAPI测试版来构建一个Web服务,我可以使用OData查询字符串约定进行查询,并让它返回OData格式的Json.我也想使用OData 2.0(而不是1.0).
虽然看起来它不支持$ select选项并且标题似乎能够覆盖$ format选项,但返回IQueryable泛型似乎提供了对我需要的大多数其他查询选项的支持.
我真正在努力的是如何最好地提供符合OData 2.0规范的Json对象.WebAPI在查询时只返回正常的Json数据.例如,如果我执行类似这样的GET请求...
http://localhost:XXXXX/vendor/?$filter=RONUMBER eq '2597385'&$select=VENDORID,VENDORNAME&$top=1&$format=Json
Run Code Online (Sandbox Code Playgroud)
..为了获得与我的开发机器上指定的RONumber匹配的最高匹配,我得到一个包含以下Json的响应...
[{"MEPartNumber":"11-2222-3-4444","MFGPartNumber":"123456-123","MFGSerialNumber":"ABC123","RONumber":"987654321","VendorId":"1234567","VendorName":"ACME SERVICE CENTER"}]
Run Code Online (Sandbox Code Playgroud)
我需要符合OData 2.0规范的Json.更像这样的东西..
OData V2: {
"d" : {
"results": {
"__metadata": {
"uri": "http://someserver/foo/vendor(1)",
"type": "Vendor"
},
"MEPartNumber": "11-2222-3-4444",
"MFGPartNumber": "123456-123",
"MFGSerialNumber": "ABC123",
"RONumber":"987654321",
"VendorId":"1234567",
"VendorName": "ACME SERVICE CENTER"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想我可以写一个自定义MediaTypeFormatter来获得我想要的结构.我也许能够修改我返回的对象以模仿所需Json的结构.除了这两个选项,有没有人知道一个聪明的方法让WebAPI给我OData 2.0格式的Json对象?
您需要编写自己MediaTypeFormatter的序列化以提供正确的序列化.我们没有在MVC 4 Beta中发布OData格式化程序,但WCF Web Api的先前版本有一些如何编写它的示例.http://wcf.codeplex.com/SourceControl/list/changesets查找Microsoft.Net.Http.Formatting.OData(您应该能够使用大部分源代码,但某些实现细节可能已更改)
另一种方法是尝试构建一个DTO,它将序列化为OData v2预期的形状.
| 归档时间: |
|
| 查看次数: |
3818 次 |
| 最近记录: |