SAP ABAP Gateway Client 里 OData 测试的 PUT, PATCH, MERGE 请求有什么区别

简介: SAP ABAP Gateway Client 里 OData 测试的 PUT, PATCH, MERGE 请求有什么区别

相信不少朋友在使用 SAP ABAP Gateway Client 测试 OData 服务时,都看到过这三个相似的 HTTP 请求类型:PUT, MERGE 和 PATCH.

aff3ae61229a822890f1ebf1db1d7f36.png

这三种类型有什么区别呢?


PUT:将 HTTP 请求(payload)作为输入,这个输入将被传入 OData 模型的 DPC Class 的 UPDATE_ENTITY 方法中。

例如我们通过 PUT 传入如下的数据:


{ “Vbkur” : “170” }

则只有 Vbkur 在 update_entity 方法中可见。 总之,如果将 OData 模型的 属性子集(attribute subset)作为 PUT 方法的输入,则相同的属性子集将会被传入 UPDATE_ENTITY 方法进行处理。


PATCH & MERGE: 如果在有效负载(HTTP 请求)中传递属性的子集,这两个方法会自动获取其他属性。 Patch 和 Merge 的行为方式相同,但基本区别在于 PATCH 支持 OData 3.0 协议,而 MERGE 支持 OData 1.0 和 2.0 协议。 因此我们应该优先使用 PATCH,而不是 MERGE.

举个例子,下列是订单的抬头属性字段集合:


{
    "Vbeln" : "32346",
    "Erdat" : "\/Date(1627171200000)\/",
    "Erzet" : "PT19H29M37S",
    "Ernam" : "FIORIUSER",
    "Audat" : "\/Date(1627171200000)\/",
    "Netwr" : "193.050",
    "Waerk" : "USD",
    "Vkorg" : "1710",
    "Vtweg" : "10",
    "Vkbur" : "180"
}


当我们使用 PATCH 操作时,仅仅传递一个待修改属性:

5f23ab07eba8aecebb91154c9cea4f90.png

但是在 DPC 的 UPDATE_ENTITY 方法内,订单抬头的所有字段都可以访问:

f109a2da6d8a254dac2ed5eb1c6162d6.png

SAP ABAP OData 框架每当触发 PATCH 或 MERGE 调用时,它将首先触发相应的 GET_ENTITY(collect all properties) 方法,然后才执行 UPDATE_ENTITY 方法。

544ae8718f0c6b2ce7e8a321cbf56128.png

注意:由于 MERGE 不是 HTTP 规范 [RFC2616] 中定义的动词之一,因此使用 MERGE 动词可能不会像 HTTP 规范中定义的方法那样无缝地通过网络中介。 在处理支持 OData 3.0 协议的数据服务时,HTTP PATCH 动词优先于 HTTP MERGE。 支持 OData 2.0 和 OData 3.0 协议的数据服务可以支持动词隧道以减轻此限制。


目录
相关文章
|
2月前
|
JSON 数据格式
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
31 0
|
7月前
|
运维
SAP ABAP 系统记录传输请求处理过程的日志存放目录
SAP ABAP 系统记录传输请求处理过程的日志存放目录
61 0
|
7月前
|
BI
SAP ABAP 系统里和传输请求读写相关的 Function Module
SAP ABAP 系统里和传输请求读写相关的 Function Module
47 0
|
4月前
|
监控 前端开发 数据可视化
SAP 标准 OData 服务 ABAP_REPOSITORY_SRV 的作用介绍
SAP 标准 OData 服务 ABAP_REPOSITORY_SRV 的作用介绍
33 1
|
1月前
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
16 1
|
7月前
|
Web App开发 JavaScript 前端开发
如何给 SAP ABAP SEGW 开发的 OData 服务添加 Access-Control-Allow-Origin 响应头试读版
如何给 SAP ABAP SEGW 开发的 OData 服务添加 Access-Control-Allow-Origin 响应头试读版
49 0
|
6月前
|
测试技术
什么是 SAP ABAP Cross Customizing Client
什么是 SAP ABAP Cross Customizing Client
38 0
|
6月前
|
开发者
关于 ABAP 传输请求释放时代码检查报错的一个提示信息
关于 ABAP 传输请求释放时代码检查报错的一个提示信息
31 0
|
7月前
|
缓存 索引
SAP ABAP 系统传输请求(Transport Request)导入到其他系统背后执行的逻辑
SAP ABAP 系统传输请求(Transport Request)导入到其他系统背后执行的逻辑
99 0
|
7月前
|
存储 数据库
SAP ABAP 传输请求背后的读取函数和存储数据库表讲解试读版
SAP ABAP 传输请求背后的读取函数和存储数据库表讲解试读版
33 0

热门文章

最新文章