背景

公司决定以重组公司业务,将常用的功能抽象成一个服务,再对外暴露RESTful 借口,来处理来自不同业务的各个客户端,服务端的请求。那么这样就要求服务提供的借口需要尽可能的开放,通用。

接下来,详细介绍如何使我们最常使用的列表接口开放,通用。我们的列表接口使用OData协议,让服务调用者自行完成查询,分页,排序的功能。

OData

一个开放的协议以一种简单规范的方式来创建和消费可查询和可协作的RESTful APIS。

查询,分页,排序在GET的Request请求中以键值对的方式传递。

1、$offset,$limit 完成分页查询

  • example.com?$offset=0 => 偏移量为0。
  • example.com?$limit=15 => 每页个数为15。
  • example.com?$offset=0&$limit=15 => 偏移量为0,每页个数为15。

2、$filter 完成条件查询

(1)操作符

  • eq 表示『相等』; example.com?$filter=age eq 10 => 查询age等于10的记录
  • like 表示『模糊查询』; example.com?$filter=name like xxx => 查询对name进行模糊匹配的记录
  • gt 表示『大于』; example.com?$filter=age gt 10 => 查询age大于10的记录
  • lt 表示『小于』;example.com?$filter=age lt 10 => 查询age小雨10的记录

(2)逻辑组合

  • and 表示『且』;example.com?$filter=name like xxx and age eq 10 => 查询age等于10对name进行模糊匹配的记录
  • or 表示『或』;example.com?$filter=name like xxx or age eq 10 => 查询age等于10对name进行模糊匹配的记录

总结:格式是 单个条件=属性名 操作符 值 ;$fitler= 单个条件 [逻辑 单个条件...]

3、$orderby 完成排序查询

  • desc 降序;example.com?$orderby=createdAt desc => createdAt 字段倒序
  • asc 升序;example.com?$orderby=updatedAt asc => updatedAt 字段增序

总结:格式是$orderby=属性名 asc|desc
4、返回结构

返回JSON对象,结构体如下:

默认情况,无count(总数)

{"items":[......]
}

需要count,则代码查询条件$count=true;example.com?$count=true

{"items":[......],"count":10
}

大家有什么问题和建议都可以在评论中讨论,接下来我会具体说明实现方法,其实比较难实现的就是一个组合逻辑处理的功能,大家也可以想一想怎么实现,可以在评论说说说自己的想法啊。

OData的Java实现(一)相关推荐

  1. OData debug - Java client - why my batch request fails

    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  2. 使用 SAP Cloud SDK 连接 OData 服务

    Connect to OData service on Neo using SAP Cloud SDK Virtual Data Model S/4HANA 系统中存储的数据本质上结构复杂,因此很难手 ...

  3. 使用简单的Java代码在SAP C4C里创建销售订单

    需要创建的销售订单的明细通过硬编码指定: 比如销售订单的描述为Jerry Test 2019-1-23 16:05PM 执行之后,看到Status Code 201,说明创建成功: 到UI上能看到成功 ...

  4. SAP OData编程指南

    OData(Open Data Protocol)协议是一个开放的工业标准,用于定义RESTFul API的设计和使用.我的文章标题前加上SAP的前缀,只是为了表明这篇文章介绍的是Jerry在SAP项 ...

  5. SAP OData 编程指南

    OData(Open Data Protocol)协议是一个开放的工业标准,用于定义RESTFul API的设计和使用.我的文章标题前加上SAP的前缀,只是为了表明这篇文章介绍的是Jerry在SAP项 ...

  6. JAVA调用SAP ODATA服务

    梳理一下,JAVA调下SAP ODATA服务过程中遇到的一些坑. 1.(401) 未经授权: 解决方法:将用户名密码加密后,添加到HTTP HEADER中. String auth = "Z ...

  7. java odata filter响应,Odata的使用

    OData:开放数据协议(OData)是一个查询和更新数据的Web协议. 一.函数的使用 contains(包含) $filter=contains(Name,'mumu') Name中包含'mumu ...

  8. java odata filter响应,使用 OData 终结点的 OData 系统查询选项

    使用 OData 终结点的 OData 系统查询选项 07/06/2017 本文内容 发布日期: 2016年11月 适用于: Dynamics CRM 2015 您可以使用系统查询选项细化查询结果. ...

  9. java odata filter_用antlr解析odata filter条件表达式

    这篇文章分享如何用antlr解析odata filter条件表达式. 我最早接触antlr,是在刚开始工作后不久,那次需要用antlr实现一个功能:把gemfire的OQL(object query ...

最新文章

  1. 【机器视觉】 import算子
  2. Mac系统下安装PIL
  3. 常用的函数式接口_Supplier接口练习_求数组元素最大值
  4. python 下标越界_Python中异常处理
  5. 如何生成项目的chm文档
  6. Fedora telnet配置
  7. mysql update多个表_mysql update 多表 (复制)
  8. 【VB.NET】实验 控件综合运用——“五一”商城大促の模拟
  9. Easyui的DateBox日期格式化
  10. k8s的应用打包工具Helm
  11. 微信小程序开发实战——模块化
  12. SpringMVC的RESTful(一)
  13. 用DbSchema生成表单和报表
  14. 闽什么什么院第二课堂网课破解-----微信内置浏览器
  15. Hyrax: Doubly-efficient zkSNARKs without trusted setup学习笔记
  16. 《寻找下一个独角兽》天使投资8字箴言:看势、识人、论术、实战
  17. clientX、offsetX、screenX、pageX的区别
  18. Vue刷新页面重新加载
  19. 查看linux当前屏保文件夹,linux下屏保设置
  20. 最全自动驾驶数据集分享系列八 | 仿真数据集

热门文章

  1. 微信消息推送配置详解 JAVA后端版本
  2. 什么是DevOps?
  3. DevOps基础-1.1-什么是DevOps以及概述
  4. JKTD-1000型铁电材料特性测试系统(铁电材料综合测试)
  5. SAP系统管理中常见问题解答(转载)
  6. 微软Project快捷功能记录
  7. Adversarial Example Detection Using Latent Neighborhood Graph
  8. 跑腿APP开发需要哪些的功能
  9. Python教程: for循环例子
  10. 【干货】电商主播培训教案:让每一个商家也能够成为电商主播