【发布时间】:2019-06-13 03:58:27
【问题描述】:
我刚刚开始使用 OData 并将其实现到我的 c# Web API 项目中。困扰我的一件事是,要加载导航属性,使用 $expand 查询而不是 url /path。
例如,通过rest api规范,如果我们要加载带有导航表(父->子)的实体,我们通常会调用
/users/1/logs
结果
{
"Id": 12254,
"ApiKey": 104254635,
"FirstName": "Joshua",
"LastName": "Marcus",
"DateStamp": "2019-06-11T06:43:11.897+03:00",
"TimeZone": "UTC",
"Logs":[
{"Id": 74216060, "Result": true, "DateStamp": "2019-06-11T06:51:17.487+03:00", "ConversionTime": 3,…},
{"Id": 74215748, "Result": false, "DateStamp": "2019-06-11T06:50:11.117+03:00", "ConversionTime": 3,…}
]
}
加载导航属性的 OData 改为使用查询参数
/users/1?$expand=logs
这有点奇怪,并且看起来不符合 Rest API 规范来查询这样的资源。也许有人可以对此发表评论并提供更多信息,说明为什么在 OData 中使用这种解决方案,是否可以使用通用父/子结构来使用 OData 查询相关记录?
【问题讨论】: