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月前
|
测试技术
性能测试和负载测试的区别
性能测试和负载测试的区别
|
2月前
|
SQL Oracle 关系型数据库
oracle11g SAP测试机归档日志暴增排查(二)
oracle11g SAP测试机归档日志暴增排查(二)
105 1
|
2月前
|
Oracle 关系型数据库 Shell
oracle11g SAP测试机归档日志暴增排查(一)
oracle11g SAP测试机归档日志暴增排查(一)
29 1
|
20天前
|
编译器 测试技术 Linux
技术洞察:循环语句细微差异下的性能探索(测试while(u--);和while(u)u--;的区别)
该文探讨了两种循环语句(`while(u--);` vs. `while(u) u--;`)在性能上的微妙差异。通过实验发现,后者比前者平均执行速度快约20%,原因在于循环条件检查的顺序影响了指令数量。尽管差异可能在多数情况下不显著,但在性能关键的代码中,选择合适的循环结构能优化执行效率。建议开发者在编写循环时考虑编译器优化和效率。未来研究可扩展到不同编译器、优化级别及硬件架构的影响。
|
2月前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(二十七)-java+ selenium自动化测试- quit和close的区别(详解教程)
【4月更文挑战第19天】本文介绍了WebDriver中关闭浏览器的两个方法:close和quit。close方法关闭当前窗口,如果这是最后一个窗口,浏览器也会退出。quit方法则直接退出浏览器并关闭所有关联窗口。示例代码展示了两者的区别,通常在自动化测试后使用quit来彻底关闭浏览器。close和quit在HTTP请求上的差异也进行了说明,close请求的是 `/session/{session id}/window/current`,而quit请求的是 `/session/{session id}`。
61 8
|
8月前
|
Java 测试技术 Maven
maven跳过单元测试-maven.test.skip和skipTests的区别
maven跳过单元测试-maven.test.skip和skipTests的区别
|
9月前
|
测试技术
黑盒测试、白盒测试、灰盒测试的区别和各自的目的
黑盒测试、白盒测试和灰盒测试是软件测试中常用的测试方法。它们的区别和各自的目的如下: 1. 黑盒测试(Black Box Testing): - 黑盒测试是一种功能性测试方法,使用者只关注输入和输出,不考虑内部结构和实现细节。 - 黑盒测试的目的是验证软件功能是否按照需求规格说明书的要求来执行。 - 测试人员不需要了解软件的内部逻辑和代码,只需关注输入和输出的正确性。 - 黑盒测试可通过设计测试用例,模拟用户使用软件的场景,以验证系统的正确性。 2. 白盒测试(White Box Testing): - 白盒测试是一种结构性测试方法,测试人员了解软件的内部结构
445 0
|
2月前
|
安全 数据安全/隐私保护
SAP ABAP Gateway 系统接口 /IWBEP/IF_MGW_APPL_SRV_RUNTIME 的作用介绍
SAP ABAP Gateway 系统接口 /IWBEP/IF_MGW_APPL_SRV_RUNTIME 的作用介绍
|
2月前
|
Java 测试技术 API
安卓APP和iOS APP在测试上的区别是什么?
安卓APP和iOS APP在测试上的区别是什么?
|
2月前
|
测试技术
容量测试和负载测试的区别
容量测试和负载测试的区别