假设我有一个名为 Employee 的基本实体类型和一个名为 Manager 的派生实体类型。所有员工的集合都可以通过/EmployeesURL 访问。将 Manager 实例 POST 到 Members 实体集的正确方法是什么?
OData v4 协议规范规定“要在集合中创建实体,客户端将 POST 请求发送到该集合的 URL。” 但规范没有说明在存在派生类型的情况下指定 POSTed 实体的类型。
URI规范规定派生类型应使用目标 URL 上的强制转换段来寻址。例如,
POST /Employees/NS.Manager
{ "Name": "Bill Lumbergh" ... }
Run Code Online (Sandbox Code Playgroud)
同时,JSON 格式规范建议使用odata.type注释,如下所示:
POST /Employees
{ "@odata.type": "#NS.Manager", "Name": "Bill Lumbergh" ... }
Run Code Online (Sandbox Code Playgroud)
那么哪个是正确的呢?或者两者都是?
请记住,我询问的是 OData 规范,而不是特定的 OData 库/框架(例如 ASP.NET)。
小智 5
从 OData 协议的角度来看,如果您在 JSON 请求中指定派生自目标类型的实例,则应包含 @odata.type 注释。您不需要在 POST 上指定强制转换段(尽管有些实现可能支持,有些可能不支持)。
所以我希望你的第二个例子是最具互操作性的。
Mike Pizzo OASIS OData 规范联合编辑
| 归档时间: |
|
| 查看次数: |
977 次 |
| 最近记录: |