[ODATA] ODATA学习笔记

OData是一种基于REST的开放数据协议

REST通用操作包括:GET、POST、PUT、DELETE、PATCH

OData相关事务码:

SEGW OData的创建

/N/IWFND/MAINT_SERVICE 在Gateway上注册,激活OData service

/N/IWFND/GW_CLIENT 在SAP Gateway Client上直接进行OData测试

/N/IWFND/ERROR_LOG 查看OData使用过程中产生的错误信息

OData服务结构:

官方测试URL:http://services.odata.org/V3/OData/OData.svc/

有一个或多个 collection(集)

collection href= 后跟的是实体集名称(区分大小写)

(1)服务文档(相当于概览类里有几种方法):

以JSON格式显示:

http://services.odata.org/V3/OData/OData.svc/?$format=json

以XML格式显示:

http://services.odata.org/V3/OData/OData.svc/?$format=xml

(2)服务元结构文档(相当于显示方法参数):

http://services.odata.org/V3/OData/OData.svc/$metadata

标签解释:

<EntityType> 实体包含属性的详细展示

<EntityContainer>此服务中所有的实体集合

<Association>关联(类似于外键)

<NavigationProperty>导航属性 ?暂时搞不懂

OData操作(参数):

1)创建:

POST 只能是新增,如果操作成功则会返回新增加的条目信息,返回201消息。

2)更新:

PUT 更改,需要提供主键信息来唯一确认要调整的条目,返回204消息。

PATCH局部更新,首先调用GET DETAIL方法来获取不会进行更新的所有属性,然后将这些值与通过PATCH请求发送的属性合并,最后使用实体集的标准更新方法执行更新。

3)删除:

DELETE删除,需要提供主键信息来唯一确认要调整的条目,返回204消息。(可以通过sap:deletable来指定该实体是否允许被删除)

4)查询:

GET查询,返回200。

多条查询时,sap:addressable控制是否可以查询,

对 REQUIRES FILTER 进行设置 设置必须提供过滤器。

单条查询(Single Read) 时,需要指定实体的主键,主键放在代表实体集合名字后边的括号中。

如果主键只包含一个属性,那么无须指定属性名称。

查询选项:选择($select)、筛选($filter)、排序($orderby)、限定范围($top)、($skip)、($inlinecount)、

统计($count)、选区层级($expand)、格式化($format)

① 选择 $select:查询选项可以指定查询的属性信息,不指定的话返回所有属性值。

例:https://services.odata.org/V3/OData/OData.svc/Products?$select=Name

只查询ID属性信息

② 筛选 $filter:查询符合filter条件的数据。

可用的过滤操作符:eq、ne、gt、ge、lt、le、and、or、not 等

可用的字符串函数:contains(包含某个子字符串)、not contains(不包含某个子字符串)、

startswith(以某个子字符串开头)、endswith(以某个子字符串结尾)、length(字符串的长度)、

indexof(某个子字符串首次出现的位置)、replace(替换某个子字符串)、substring(提取某个子字符串)、tolower(转换字符串为小写)、toupper(转换字符串为大写)、trim(去掉字符串中的空格) 等

例:https://services.odata.org/V3/OData/OData.svc/Products?$filter=Name eq 'Milk'

③ 排序 $orderby:根据实体集中的任何属性进行排序,OData不会默认排序。默认是升序(asc升序 / desc降序);指定多个属性排序时,属性与属性之间要用逗号隔开,导航属性(NavigationProperty)不能排序。

例:https://services.odata.org/V3/OData/OData.svc/Products?$orderby=ID desc

④ 限定范围

$skip 指定跳过前几条

$top 获取实体集的前几条

例:https://services.odata.org/V3/OData/OData.svc/Products?$skip=2&$top=1

$inlinecount 返回当前查询条件的所有记录数+内容;有allpages和none两个参数,前者返回查询数据集的数量,后者返回结果不包含数据集的数量

例:https://services.odata.org/V3/OData/OData.svc/Products?$inlinecount=allpages

⑤ 统计

$count 返回符合条件的条目数(数目)

例:https://services.odata.org/V3/OData/OData.svc/Products/$count

⑥ 选取层级 ?

$expand 相当于外键查询 可以从多个实体类型读取数据,要使用$expand,必须在模型中定义相应的导航属性。

例:

⑦ 格式化

$format 定义了OData调用及返回的响应格式,可以指定XML、JSON

例:https://services.odata.org/V3/OData/OData.svc/Products/?$format=json

建议使用JSON

OData Project

① Data Model

导入数据库表,定义Entity(实体)

② Service Implementation

CRUD增删改查

③ Runtime Artifacts

重定义类方法:

Data Provider Base Class ( suffix_DPC ) 属于ABAP类,是基于OData模型的CRUD操作,搜索操作和function import的实现;

Data Provider Extension Class ( suffix_DPC_EXT ) 属于DPC的扩展类,重定义实现自定义逻辑;

Model Provider Base Class ( suffix_MPC ) 属于ABAP基类,一般不干预这个类,如有需求要修改OData模型,点击Generate后,MPC代码会重新生成;

Model Provider Extension Class ( suffix_MPC_EXT ) 属于MPC的子类,可以用于在模型上添加额外一些数据,Generate后不会覆盖代码。

两个模型

Registered Model ( suffix_MDL ) 是OData服务模型的技术名称;

Registered Service ( suffix_SRV ) 是OData服务的技术名称。

④ Service Maintenance

服务注册(Register)

/N/IWFND/MAINT_SERVICE

进行Gateway Add Service 添加服务操作

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值