网站地图
hnsjyk999.com
三九百科 包罗万象
开放数据协议 发布于:

开放数据协议(Open Data Protocol,简称OData)是一种描述如何创建和访问Restful服务的OASIS标准。该标准由微软发起 ,前三个版本1.0、2.0、3.0都是微软开放标准,遵循微软开放规范承诺书(Microsoft Open Specification Promise)。第四个版本4.0于2014年3月17日在OASIS投票通过成为开放工业标准 。

开放数据协议(Open Data Protocol,简称OData)是由微软于2007年发起的开放协议 。当时的开发代号叫“Project Astoria”。于2009年更名为Open Data Protocol 。

开放数据协议在微软内部演进了三个主要的版本,分别是1.0(2007年),2.0(2009年)和3.0(2009年以后)。

2014年3月17日,开放数据协议经由OASIS批准,正式成为开放工业标准 。

开放数据协议主要由以下几个部分组成:

核心协议主要定义了开放数据协议的核心语义和行为。它们包括:

数据模型

服务模型

协议和模型的版本管理

拓展性

数据格式

HTTP头

HTTP状态码

上下文URL(context URL)

数据请求和响应

安全性

一致性(Conformance)

URL规范主要定义了一系列推荐(非强制)采用的构建用于访问OData服务中的数据和模型的URL的规则。它们包括:

URL的组成部分

服务的根URL

资源路径

查询语句

OData服务的数据模型是通过EDM(实体数据模型)来定义的。通用格式定义语言(Common Schema Definition Language (CSDL))定义了OData服务的EDM模型的一种XML格式的表现形式。它的内容包括:

CSDL的命名空间

实体模型的封装

实体模型的普通特性

具体的XML元素和属性介绍

ABNF定义了构建OData请求和响应URL的巴科斯范式。它的包括对以下组成部分的描述:

资源路径

查询语句

上下文URL(context URL)

表达式

OData函数参数的JSON格式

命名与标识符(identifiers)

数据字面值(literal data values)

标头值(header values)

标点符号

JSON格式主要定义了OData的请求和响应的JSON表现形式。

Atom格式主要定义了OData的请求和响应的Atom表现形式。

OData协议中的词汇表主要用来用户为OData服务添加注解 (annotations)。例如,某个属性是否可读等。

数据聚合拓展主要为OData增加了聚合的概念。它定义了数据聚合的语义和表现形式,尤其是:

查询聚合数据的语义和表现形式

查询聚合数据的结果格式

标记何种数据可以被聚合,如何聚合的词汇(vocabulary term)

1. 请求一个实体集合(an entity set)

GET ~/Customers

"~"符号代表OData服务的根目录

2. 请求一个单独的实体(a single entity)

GET ~/Customers(1)

OData采用圆括号作为表示单独实体的键值的字段(key segment)

3. 请求一个属性(a property)

GET ~/Customers(1)/Name

在OData服务的模型中,实体类型(entity type)具有属性。属性可以理解为该实体类型的数据成员。

3.1 请求一个属性的原始值(raw value of a property)

GET ~/Customers(1)/Name/$value

相比于#3中的请求,对于属性原始值的请求的响应将不再是一个JSON或者Atom的对象,而是该属性的原始数据。比如纯文本,或者二进制流(对于类型为Edm.Stream的属性)。

4. 查询语句

4.1 选择查询($select)

GET ~/Customers?$select=Name,Age

$select用于选择实体的哪些属性被包含在返回的数据中。

4.2 展开查询($expand)

GET ~/Customers?$expand=Orders

OData中的实体类型之间有关系(relationship)。比如顾客(Customer)类型可以有一系列的订单(Orders)。这样一来,顾客类型与订单类型相关。顾客类型上可以定义导航属性(navigation property)用于描述这种关系(如上例中Customer类型的Orders属性)。$expand的查询帮助将实体类型的导航属性的值加入请求的返回数据中。

4.3 过滤查询($filter)

GET ~/Customer?$filter=Age gt 35

OData内置了一系列如上面例子中"gt"的过滤操作符(filter operations)和一些查询函数(query functions)用来支持不同的过滤查询需求。

4.3.1 内置过滤操作符

4.3.1.1 比较操作符

4.3.1.2 逻辑操作符
  

4.3.1.3 算数操作符
  

4.3.1.4 分组操作符

4.3.2 内置查询函数

4.3.2.1 字符串函数

4.3.2.2 字符串函数

4.3.2.3 数学函数

4.3.2.4 类型函数

4.3.2.5 Geo函数(用于地理、测绘等)

待编辑


相关文章推荐:
Restful | OASIS | 微软 | OASIS | OASIS | 微软 | OASIS | HTTP | HTTP | EDM | EDM | 封装 | 巴科斯范式 | 路径 | JSON | JSON | Atom | Atom | 概念 |