Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
🔗 BS ISO/IEC 20802 是英国标准协会(BSI)依据国际标准 ISO/IEC 20802 采用发布的关于开放数据协议(Open Data Protocol,OData)v4.0的信息技术标准,属于英国标准的本国实施版本(UK implementation)。OData 是一种建立在 HTTP/REST 之上的数据访问协议,用于以标准化方式完成数据资源的创建、读取、更新与删除(CRUD)以及查询,从而实现不同系统之间的数据互操作。该系列由英国技术委员会 ICT/-/1(信息系统协调)归口制定,发布时标准分类号(ICS)为 35.100.70,对应的国际标准第 1 版于 2016 年 12 月 15 日发布。系列目前收录两份标准:第 1 部分规定 OData 核心协议,第 2 部分规定 OData JSON 格式。
OData 最初由微软提出并提交给 OASIS 组织标准化,OASIS 于 2014 年发布 OData v4.0 规范,随后被 ISO/IEC JTC 1(信息技术联合技术委员会)采纳为国际标准。它以统一资源标识符(URI)表达数据资源,定义了一组标准系统查询选项(如 $filter、$orderby、$top、$skip、$select、$expand、$count 等)与通用数据模型,使不同厂商、不同平台的数据库与数据服务能够被统一访问。OData v4.0 采用”协议+格式”双层结构:协议层描述资源、操作与查询语义,格式层描述数据的序列化表示。
BS ISO/IEC 20802 系列当前收录的两个部分如下表所示。第 1 部分规定协议核心,第 2 部分规定 JSON 序列化格式,二者相辅相成,缺一不可。值得注意的是,BS 版本的英国国家序言(National foreword)指出,使用者有责任正确应用该标准,且符合英国标准并不能免除法律责任。
| 标准号 | 中文主题 | 主要内容 | 首版发布 |
|---|---|---|---|
| BS ISO/IEC 20802-1:2016 | 核心(Core) | OData v4.0 核心协议:数据模型、URI 约定、查询选项、CRUD、函数/动作与批量请求 | 2016-12-15 |
| BS ISO/IEC 20802-2:2016 | OData JSON 格式(OData JSON Format) | OData 数据的 JSON 表示、控制注释、元数据注释、错误对象与媒体资源格式 | 2016-12-15 |
BS ISO/IEC 20802-1 规定 OData v4.0 的核心协议,主要技术内容如下:
核心协议还定义了元数据文档(Metadata Document)的语义:服务通过 $metadata 端点暴露其类型系统,使客户端能够动态发现可用实体集、属性、导航与操作。这一”自描述”能力是 OData 区别于普通 REST API 的关键特征,也使客户端无需预先编码即可浏览任意 OData 服务。
OData v4.0 提供了一组标准化的系统查询选项,客户端通过附加在 URL 上的查询参数控制服务器返回的数据量与形态,常用选项如下表所示:
| 查询选项 | 作用 | 典型用法示例 |
|---|---|---|
| $filter | 按条件筛选数据集 | $filter=price gt 10 and category eq ‘book’ |
| $orderby | 按一个或多个属性排序 | $orderby=name asc, age desc |
| $top / $skip | 分页:取前 N 条 / 跳过前 N 条 | $top=20&$skip=40 |
| $select | 投影:仅返回指定属性 | $select=id,name,price |
| $expand | 展开导航属性,联表返回关联实体 | $expand=orders |
| $count | 返回集合元素总数 | $count=true |
服务器应当对查询选项进行翻译与优化。筛选与展开是性能敏感的操作:$filter 中的复杂表达式应尽量下推到数据库层执行,$expand 应避免无限制的多级展开导致笛卡尔爆炸。此外,OData v4.0 还支持函数(Function)与动作(Action):函数是只读的可调用逻辑(如标量计算或远程过程),动作是带有副作用的操作(如”下单””审核”),二者共同扩展了基于通用 CRUD 的服务能力。
BS ISO/IEC 20802-2 规定 OData 数据的JSON 表示格式,这是 OData v4.0 默认的线上格式,主要内容包括:
JSON 格式强调“上下文驱动的可发现性”:响应中的 @odata.context 注释指向元数据中的对应片段,@odata.id 提供实体的规范标识。客户端无需预先获取完整元数据,即可依据注释理解响应结构,实现轻量、自描述的数据交换。
ISO/IEC 20802 对实现规定了一致性(Conformance)要求:声称符合 OData v4.0 的服务必须满足第 1 部分(核心协议)与第 2 部分(JSON 格式)的规定,包括 URL 语义、HTTP 映射、数据表示与控制注释的使用。实现可分为”仅查询”与”完整”两类符合级别,厂商应在文档中明确声明其符合级别。对于集成方而言,应要求供应商提供一致性测试结果(如借助 OASIS 社区提供的一致性测试工具),避免依赖厂商私有扩展导致锁定。
OData 广泛应用于企业数据集成、SaaS 平台开放接口、低代码平台与数据治理场景。工程实践要点包括: