Olingo4 向后兼容吗?

Is Olingo4 backward compatible?

如果我在客户端使用 Olingo4 库 (java),它们是否与 ODATA 2.x 服务兼容?

谢谢

它可能适用于一些微不足道的场景,但即使是一个简单的 count 选项对于不同的 OData 版本也有很大差异:

  1. http://services.odata.org/V2/OData/OData.svc/Products/?$inlinecount=allpages&$format=json [v2]
  2. http://services.odata.org/V4/OData/OData.svc/Products?$count=true&$format=json [v4]

Official OData page 建议 Apache Olingoodata4jJello Framework 应该有 OData 2 的客户端实现。我没有使用 Olingo 的 v2 客户端,但我听说它很差。我无法从 odata4jJello Framework 中找到任何有趣的东西(快速研究)。

在最坏的情况下,您可以使用标准的 HTTP 客户端。说到底,OData是基于REST的。

简短的回答是

长话短说,Olingo 或任何其他库只是 OData 协议的一个实现。协议的第 4 版与以前的版本相比有重大(读取不兼容)更改。

您可以查看 this link 以获取所有更改的列表,包括 OData 4 中不兼容的更改。

现在要完全兼容,与OData 2和OData 4,你可以读取客户端发送的OData-MaxVersion header并基于它,你可以发送响应accordingly.This 将要求您在后端同时拥有 odata 2 和 odata 4 实现(使用 Olingo 2 和 Olingo 4 或其他)运行。

就我个人而言,如果您今天刚起步并且没有充分的理由拥有两个实现,则 OData v4 服务不一定非要支持较低版本的客户端。

OData 4 服务可能会以 4XX 级错误响应 V1-V3 客户端。

http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398370