首先,OData 响应的标准规范如下所示:
{
"d" : {
"results": [
{
"__metadata": {
"uri": "http://demos/Orders(10248)",
"type": "SampleModel.Order"
},
"ProductId": 10248,
"Name": "Vgnon"
}
],
"__count": "1"
}
}
但是,在 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"
}
]
}
注意两个响应中的计数。Web API 是否遵循 OData 标准规范?
此外,正如这个 SO 问题所指出的:Web API OData Inlinecount not working 答案是这样的:
开箱即用的 $inlinecount 仅在您发回 OData 响应时才有效。
这是否意味着在 Web API(使用 EntitySetController 或 ODataController)中我们可以返回 OData 响应和非 OData 响应?或者我应该说,标准 OData 响应和非标准 OData 响应?