首页 > 技术文章 > OData的初步认识及使用

huie 2020-06-11 16:50 原文

OData是什么

  Open Data Protocol(OData),程序数据库格式标准化的开放数据协议,以简单和标准的方法,建造或消除可查询和可操作的RESTful API,是用来查询和更新数据的一种Web协议,其提供了把存在于应用程序中的数据暴露出来的方式。Apache Olingo 是个 Java 库,用来实现OData。

OData产生契机

  已知REST只是一种设计Web服务的思想,不是一种标准化的协议,因此会导致各家公布的RESTful API在统一通用方面的欠缺。OData就是为了弥补这种欠缺而被提出来的标准协议。

实施OData

如果需要实施OData服务,需要完成以下四个部分:

  • OData模型

    定义数据结构,一般发生在后端系统。

  • OData协议

    支持CRUDQ(创建,读取,修改,删除,查询)功能,数据的传输可以使用XML或者JSON。

  • OData客户端库

    保证了客户端能够使用库函数方便的访问OData服务。注意,客户端库并不是必须的,但是尽量有,这样可以节省大量的编码工作。

  • OData服务

    实现了OData协议,可以最终被客户端访问的服务。

  • OData服务至少向外暴露一下三个接口:

     1: {host}/:  获取实体列表

     2: {host}/$metadata: 获取实体元数据

     3: {host}/{entityId}: 获取对应实体的数据  (标准查询参数:  ?$select=id,name&$filter=id eq 1 and age gt 20)

OData服务的结构

  • 服务文档(Service Document)
  • 服务元结构文档(Service Metadata Document)

以上两种文档包含了:

  • 实体(Entity)
  • 实体类型(Entity Type)
  • 实体集合(Entity Set)
  • 属性(Property)
  • 导航属性(Navigation Property)
  • 关联(Association)

OData的使用

一、函数的使用

  • contains(包含)$filter=contains(Name,'momo')
  • not contains(不包含)
  • startswith(以xx开头)
  • endswith(以xx结尾)
  • length(字符长度等于x)
  • indexof(字符长度等于x索引为n开始包含xx字符)
  • replace(替换)
  • substring(从第n个字符开始)
  • tolower(转换为小写)
  • toupper(转换为大写)
  • trim(去空格后)

二、$filter运算符

eq(等于);ne(不等于);gt(大于);ge(大于等于);lt(小于);le(小于等于);and(且);or(或);()(分组)

三、$orderby排序  

http://localhost:5000/userInfo?$orderby=name desc,EventName asc

四、$top,skip,inlinecount客户端换页

http://localhost:5000/userInfo?$top=5&$skip=1&$inlinecount=allpages

五、$count数据量

六、$expand嵌入内容

七、$format格式化

八、$select查询字段的列表(和sql中select后面的表达式一样)

 

推荐阅读