自定义函数结果上的 OData PATCH

OData PATCH on a custom function result

我想知道 OData 协议是否允许对自定义函数的结果进行修补,例如,假设一个 API 具有自定义函数,returns 一个实体:

https://<serviceroot>/api/EntitySet('id')/GetChildEntity(key=entryId)/

为了避免额外的往返行程,我希望客户端能够通过对其进行修补来进一步修改 GetChildEntity 的返回实体,因此

PATCH https://<serviceroot>/api/EntitySet('id')/GetChildEntity(key=entryId)/

OData 协议允许这样做吗?

是的,根据协议这是支持的,你可以参考规范(http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752310)并且声明是

如果函数是可组合的,则可以将额外的路径段附加到 URL 以标识可组合函数(或函数导入)以适合函数(或函数导入)返回的类型。最后一个路径段决定了系统查询选项 和可用于此 URL 的 HTTP 动词,例如如果最后一个路径段是多值导航 属性,可以使用 POST 请求在已识别的集合中创建新实体。