sta*_*247 1 asp.net-mvc odata asp.net-web-api
首先,OData响应的标准规范如下:
{
"d" : {
"results": [
{
"__metadata": {
"uri": "http://demos/Orders(10248)",
"type": "SampleModel.Order"
},
"ProductId": 10248,
"Name": "Vgnon"
}
],
"__count": "1"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在Web API(使用EntitySetController)中,OData响应如下所示:
{
"odata.metadata":"http://localhost:43111/api/$metadata#Products",
"odata.count":"1",
"value":
[
{
"ProductId":2,
"CreatedDate":"2013-06-10T23:53:26",
"CreatedBy":0,"Name":"Camera"
}
]
}
Run Code Online (Sandbox Code Playgroud)
注意两个响应中的计数.Web API遵循OData标准规范吗?
此外,正如这个SO问题所指出的:Web API OData Inlinecount不工作 答案说:
开箱即用$ inlinecount仅在您发回OData响应时有效.
这是否意味着在Web API中(使用EntitySetController或ODataController)我们可以返回OData响应和非OData响应?或者我应该说,标准OData响应和非标准OData响应?
WebAPI OData实现遵循OData规范.您在问题顶部包含的JSON是旧的OData JSON格式,现在通常称为"详细JSON".WebAPI生成的JSON格式是OData v3及更高版本的新OData JSON格式.WCF数据服务将为v3服务中的"application/json"媒体类型生成相同的格式.
如果您想要旧格式,请尝试发送"application/json; odata = verbose"的Accept标头.
请查看此处的规范,了解新的JSON格式:http://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd01/odata-json-format-v4. 0-csprd01.html (注意这是OData v4规范,但仍未完成,但大多数关于JSON格式的描述也适用于v3).
| 归档时间: |
|
| 查看次数: |
1499 次 |
| 最近记录: |