介绍 OData 协议
学习目标
描述用于基于 Web 应用程序的 OData 标准
Open Data Protocol(OData) 是一项 OASIS 标准,定义了构建和消费 RESTful API 的最佳实践。OData 帮助您在构建 RESTful API 时专注于业务逻辑,而无需担心如何定义请求和响应标头、状态码、HTTP 方法、URL 约定、媒体类型、负载格式、查询选项等。它是由 OASIS 联盟定义的一项开放标准。
OData 还会指导您跟踪更改、为可复用过程定义函数或操作、发送异步或批处理请求等。此外,OData 还提供了扩展机制,以满足 RESTful API 的任何自定义需求。
OData RESTful API 易于消费。OData 元数据是对 API 数据模型的机器可读描述,它使得能够创建强大的通用客户端代理和工具。其中一些工具可以帮助您与 OData 交互,甚至无需了解该协议的任何内容。
OData 基础
OData 的主要特性之一是,它针对 URI 中标识的可寻址资源使用现有的 HTTP 动词 GET、PUT、POST 和 DELETE。从概念上讲,OData 是一种通过使用 HTTP 动词对资源执行数据库风格创建、读取、更新和删除操作的方式:
GET : 获取资源(实体集合、单个实体、结构属性等)。
POST : 创建新资源。
PUT : 通过用完整实例替换来更新现有资源。
PATCH : 通过用部分实例替换其部分属性来更新现有资源。
DELETE : 移除资源。
OData 服务
OData 目前支持两种格式来表示其公开的资源:
基于 XML 的 AtomPub
JSON 格式
JSON 的协议开销比 Atom Publishing 协议更少。JSON 可以很容易地被 JavaScript 和 SAPUI5 消费。
每个 OData 服务由一个 URI(Uniform Resource Identifier,统一资源标识符)表示,称为服务根 URI。URI 是统一资源标识符,是一串用于标识资源的字符。更准确地说,每个资源都可以使用 URL(Uniform Resource Locator,统一资源定位符)进行访问。统一资源定位符描述了如何访问该资源。这种标识方式使得能够使用 OData 等特定协议通过网络与资源的表示形式进行交互。
与每个 OData 服务关联的文档类型
与每个 OData 服务关联的文档有两种类型:
服务文档
服务元数据文档
服务文档列出了可检索的实体集、函数和单例。客户端可以使用服务文档以超媒体驱动的方式浏览模型。服务文档位于 http://<host>:<port>/<service>/。
元数据文档描述了 OData 服务所能理解的类型、集合、函数和操作。客户端可以使用元数据文档来了解如何查询服务中的实体并与之交互。服务元数据文档位于 http://<host>:<port>/<service>/$metadata。该 URL 返回服务的 XML 元数据(实体数据模型)。服务元数据文档的响应仅支持 XML。
OData 与 CAP
在基于 CAP 的应用程序中,服务通过 Core Data Services(CDS)模型来表达,并由 CAP 运行时环境管理。在 CAP 框架中,每个功能组件都被视为一个服务。这些服务代表了某个领域的交互特性,包括它们公开的实体、启用的操作以及触发的事件。

注意
虽然 CAP 中公开服务的默认协议是 OData,您也可以使用协议适配器在 CAP 中覆盖默认行为。REST 和 GraphQL 等协议均开箱即用地得到支持。此外,也可以定义您自己的自定义协议适配器。
小结
您现在对 OData 协议有了更深入的理解,并能够描述其关键概念。您还了解了 CAP 中的 OData,并知晓了通过协议适配器使用不同协议的可能性。
延伸阅读
OData - the Best Way to REST
Understand OData in 6 steps
Providing Services in CAP
Protocol Adapters