SAP Business Accelerator Hub 是一个集中化平台,提供了大量的 API 资源,这些 API 来自多个 SAP 产品,包括 SAP S/4HANA、SAP SuccessFactors、SAP Customer Experience、SAP BTP 以及部分合作伙伴的产品。
对于希望将 SAP 产品与第三方系统集成,或开发定制应用程序的开发人员和企业来说,这是一个非常有价值的资源。其官方链接:
https://api.sap.com/
打开首页之后,选择自己期望使用 API 所属的 SAP 产品,比如 SAP S/4HANA Cloud Public Edition:
进入明细页面,能看到 SAP S/4HANA Cloud Public Edition 提供的 API,按照 SOAP,OData 和 REST 三种类型来划分:
SOAP API
SOAP(Simple Object Access Protocol)是一种基于 XML 的协议,用于在网络上进行结构化信息的交换。SOAP 协议在 1998 年由 Microsoft、IBM 和其他技术公司联合提出,并成为了 W3C 标准。
SOAP 通过 HTTP、SMTP、TCP 等协议来传输消息,它的核心优势在于高度的扩展性、严格的标准化和对多种编程语言和平台的良好支持。
SOAP API 具有以下几个显著的技术特点。
消息格式:SOAP 使用 XML 作为消息格式,这种格式非常严格并且高度结构化。这意味着消息的每个部分都有明确的定义,并且可以被不同的平台解析和理解。
协议独立性:SOAP 可以通过多种底层协议传输,如 HTTP、SMTP、TCP 等。这使得 SOAP 在不同的网络环境下具有很强的适应性。
WS-* Standards:SOAP API 通常与一系列的 Web 服务标准(WS-*) 一起使用,这些标准涵盖了安全性、事务处理、可靠消息传递等功能。这使得 SOAP 特别适合于复杂的企业级应用程序。因为这些服务标准都以 WS-开头,故又称为 WS-* Standards.
严格的标准化:由于 SOAP 的严格标准化,它在处理安全性、事务性和消息路由等复杂需求时表现得非常出色。
SOAP API 通常用于需要高安全性、高可靠性和复杂事务处理的企业级应用中,这些应用不仅需要保证高度的安全性,还需要支持复杂的事务处理和故障恢复机制。
笔者 2007 年刚毕业加入 SAP 时,从事 SAP Business By Design 产品开发。当时业界最流行的就是 SOA - Service Oriented Architecture,基于 SOAP 的 Web Service 在 SAP BYD 中使用非常普遍,如下图所示:
笔者之前也写过关于 SOAP Web Service 的一些文章:
OData API
OData API 可以看成一种特殊实现类型的 REST API. 下面这张图的出处:
https://community.sap.com/t5/technology-blogs-by-members/everything-about-odata/ba-p/13372768
OData API 基于的 OData(Open Data Protocol)协议,是一种基于 REST 的数据访问协议,由 Microsoft 推出,旨在简化数据的查询和操作。
OData API 的主要目标是通过一组标准的查询和操作方式,使不同的系统能够方便地访问和操作数据。
OData API 的技术特点主要体现在以下几个方面:
基于 REST 架构:OData API 基于 REST 架构,使用 HTTP 协议进行通信。OData 定义了一套标准的 URI 规则、HTTP 方法和数据格式,使得数据访问更加直观和一致。
数据查询和操作:OData 提供了一套丰富的查询和操作功能,允许客户端通过 URL 查询参数来指定过滤条件、排序顺序、分页等操作。这使得 OData API 特别适合用于访问复杂的数据集。
元数据描述:OData 使用元数据来描述数据模型,客户端可以动态地了解数据的结构。这种自描述性使得 OData API 更加灵活,能够适应不同的数据模型。
广泛的工具支持:由于 OData 的标准化,许多开发工具和平台都提供了对 OData 的支持。SAP 旗舰级产品 S/4HANA 的前后台通信,采用的就是 OData. 并且 SAP 还推出了许多基于 OData 的开发工具和框架,最为开发人员熟知的就是 CDS View 源代码中 OData 相关的注解,以及基于这些注解自动生成 UI 界面的 Fiori Elements.
笔者之前写过的和 SAP OData 相关的文章:
添加了 @OData.publish 注解的 SAP CDS view 发布的 OData 服务,为何不支持修改和创建功能?
SAP UI5 OData 谣言粉碎机:极短时间内发送两个 Odata request,前一个会自动被 cancel 掉吗
REST API
Restful API(基于 REST 的 API)是目前最流行的一种 API 类型,广泛应用于 Web 开发中。REST(Representational State Transfer)是一种架构风格,而不是一种协议,它定义了一组约束条件和属性,基于这些约束和属性设计的 Web 服务可以具有良好的性能、可伸缩性和简洁性。
Restful API 有以下几个显著的技术特点:
资源导向:Restful API 以资源为中心,每个资源都有唯一的 URI 进行标识。客户端通过 URI 来访问资源,并使用标准的 HTTP 方法(如 GET、POST、PUT、DELETE)对资源进行操作。
无状态性:Restful API 的每个请求都是独立的,服务器不会保留客户端的状态。这种无状态性使得 API 更加容易扩展和维护。
统一接口:Restful API 使用统一的接口风格,不同的资源共享相同的操作方法(如 GET 用于读取资源,POST 用于创建资源)。这种统一性提高了 API 的一致性和易用性。
客户端-服务器架构:Restful API 遵循客户端-服务器架构,客户端和服务器之间通过标准的 HTTP 协议进行通信,客户端不需要了解服务器的内部实现。
缓存支持:Restful API 通过使用 HTTP 的缓存机制,可以显著提高性能,减少服务器的负载。
Restful API 在各种应用场景中都非常适用,特别是在 Web 应用开发中。由于其简洁、易用和与 HTTP 协议的紧密结合,Restful API 成为许多开发者的首选。
比如 SAP Business Accelerator Hub 上关于 Subscription Billing 的 Business Partner REST API,通过 HTTP GET / POST / PUT / DELETE 实现数据的增删改查,看起来非常直观,使用起来也没有学习成本。
最后简单总结一下。虽然 SOAP API、OData API 和 Restful API 都是用于系统间通信的接口,但既然像 SAP Business Accelerator Hub 这种专业网站,将三者分别区分开来,说明它们在技术实现、应用场景和适用性上还是存在着一定差别。
技术实现和复杂性上的区分
SOAP API 基于 XML,具有严格的标准和协议支持,适用于复杂的企业级应用,但开发和使用较为复杂。
OData API 基于 REST 架构,但专注于数据访问和操作,适用于需要复杂数据查询和管理的应用。
Restful API 简单易用,基于 HTTP 协议,适用于大多数 Web 应用开发。
应用场景上的区分
SOAP API 通常用于需要高安全性和复杂事务处理的企业级应用,如金融系统和 ERP 软件。
OData API 适合用于需要灵活数据查询和操作的企业应用,如 ERP 系统。
Restful API 适用于各种 Web 应用开发,特别是对性能和扩展性要求较高的互联网应用。
互操作性和工具支持
SOAP API 在不同平台之间具有良好的互操作性,并且得到了许多企业级开发工具的支持。
OData API 拥有丰富的查询功能和自描述性,特别适合数据驱动的应用,并且得到了 Microsoft、SAP 等大厂的支持,生态圈的 SDK 等开发工具也非常成熟完善。
Restful API 因其基于 HTTP 的简洁性和广泛的使用,得到了几乎所有 Web 开发框架和工具的支持。
在实际开发中,选择哪种 API 应该根据项目的需求、复杂性以及现有系统的技术栈来决定。
关于 SAP API 开发的更多细节,请参阅笔者的文章:SAP API 开发方法大全。