BTP Integration Suite学习笔记 - (Unit1) Developing with SAP Integration Suite
BTP Integration Suite学习笔记 - (Unit2) Developing with SAP Integration Suite
带着一个问题去学:明明可以直接访问一个后端系统的OData服务,为什么还要再多绕一道CPI?
Unit3. API管理
3.1 SAP API 管理
SAP API Management是一个映射API整个生命周期的解决方案。
再具体一点,它分为:
- Building APIs 开发构建API:
- Publishing APIs 发布API:
产品Product
是一组API。它包含特定于业务的元数据,用于监视或分析。例如,所有与CRM相关的api都可以捆绑为一个CRM产品。与其单独发布api,不如将相关api捆绑在一起作为产品发布。在将所需的api包含到产品之后,将产品发布到Catalog,应用程序开发人员可以通过Catalog浏览产品。 - Analyzing APIs 分析API:
API Analytics服务器使用API的运行时数据来分析信息。运行时数据被收集、分析并显示为图表、标题和关键性能指标(kpi)。 - Consuming APIs 消费API:
API Business Hub Enterprise是一个应用程序,它为应用程序开发人员提供了一个使用API的公共平台。每个API Management客户都可以在云上使用自己的API Business Hub Enterprise应用程序。API Business Hub Enterprise为机载应用程序开发人员提供了探索和测试API、创建和订阅应用程序的功能。 - Monetizing APIs API变现:
SAP API Management为所有API提供商提供了货币化功能,以便通过使用API产生收益。 - Discover API Packages 发现API:
在API Management中,您可以在API Portal上的SAP Business Accelerator Hub中发现API Management平台支持的API包。 - API Designer API设计器:
使用API设计器为API建模。API设计器基于OpenAPI Specification (OAS)标准,这是一个开源协作项目。
API Management需要用户分配角色APIPortal.Administrator
。角色具体查看。
3.2 技术了解
先整体看下SAP API Management的组成
- No. 1:
API Provider
- Summarizes many different sources - No. 2:
API
- The new API with URL (No. 4) - No. 3: API Designer - An openAPI definition
- No. 4: The new API URL - Acts as proxy
- No. 5:
Policies
- Edit the request and response message - No. 6:
Product
- Implementation of an API - No. 7:
Application
based on a product - No. 8: Additional services such as monitoring, testing, and more
- No. 9: Entry in API Business HUB Enterprise.
后面会有章节详细说明每一个组件,但整体可以看出几点,
-
API Provider可以由4个源头
- 通过open connector接过来的第三方API
- 通过Cloud connector接过来OP的SAP On-Prem 后端API(ECC ,S/4 HANA, PI, PO 等等)
- Cloud Integration云集成 过来的OData 或 SOAP API
- Internet URL API
-
Consumer可以调用的点有两个,一个是调用
API Proxy
,一个是调用最终的Application
。 -
Policy
是结合API Proxy
使用的
也可以这么划分:
从使用者角色的角度看这几部分功能:
API Portal包括了:
3.3 创建API Provider
API Provider在架构中承担的角色:
API Provider
定义了在想要访问的特定主机上运行的服务的连接详细信息。使用API Provider
定义以下内容:
- 希望应用程序访问的主机的详细信息。
- 定义建立连接所需的任何进一步细节,例如代理设置。
API Provider可以由4个源头
1. 通过open connector接过来的第三方API
2. 通过Cloud connector接过来OP的SAP On-Prem 后端API(ECC ,S/4 HANA, PI, PO 等等)
3. Cloud Integration云集成 过来的OData 或 SOAP API
4. Internet URL API
在配置时每种类型需要配置的参数各不相同,具体参考
使用API Provider的好处:
- 可以连接到不同的后端本地/云系统。
- 发现服务/接口。
- 简化内部部署连接。
- 简化后端系统更改时的配置。
示例:
为了在ES5中使用GWSAMPLE_BASIC API,必须生成一个封装初始接口的代理。这个代理通常被称为API Provider。在组件图中,生成的连接和构件以红色突出显示。
配置过程很简单,跟着这个做就好。
注意创建API Provider之前记得设置一下API Virtual Host
值得一提的是,这个地址是一个catalog,它包含了很多个服务。在下面创建API时,如果使用根据API Provider方式创建,还会有一步选择具体服务的步骤。
3.4 创建API(Proxy)
原来叫API Proxy,是因为它充当实际资源API的代理,现在叫API,是相同的概念。
其实应用程序开发人员是可以直接使用相应的服务的,那为什么还要创建一个API代理呢,API Proxy可以掩盖想要公开的服务,API将一个公开可用的HTTP端点映射到后端服务。创建API代理可以让API Management处理保护、分析和监视服务所需的安全性和授权。这就是开头问题的答案,有了这个Proxy的掩护,我们可以用这个API在安全性和分析方面做更多。
从上面这幅图可以看出API的创建来源有5处:
- 手工导入
- API Designer 画出来
- 根据API Proxy创建
- 根据URL创建
- 根据API Provider
示例1. Create from API Provider
示例是根据上一节的API Provider创建一个API, 过程中先选中API Rrovider,然后点击按钮’发现’,会将该catalog下的所有服务都列出来选择。
选择后会自动填充下面几个字段
可以注意到这里主机别名已经使用到的Virtual Host ‘cgdemo’。
创建完成后点击’部署’,部署后才可以进行测试。
示例2 Create from URL
下面是使用URL创建API的示例
这里使用百度地址填写URL
部署后生成的API地址,测试:
示例3 Create from API Proxy
注意这里服务类型只能是REST或是SOAP,即使原来的API是ODATA。
另外需要注意的是版本字段也是必输的。当接口发生变化时为了不影响原有接口,可以使用不同的版本,API的多个版本可以在运行时和设计时共存,版本指定后,这个API的名称后自动为会加版本为后缀。
API状态
可以在创建或更新API时设置API的状态:
状态 | 描述 |
---|---|
Alpha | 用于探索性目的的API版本 |
Beta | 不打算用于生产的API版本 |
Active | 用于生产使用的API版本 |
Deprecated | 当API被标记为已弃用时,鼓励客户使用后续API |
Decommissioned | API的一个版本,其中服务不再可用,并且不能有效地使用 |
当弃用或停用API时,必须提供弃用或停用日期,以及后续API。这可以是API门户中的另一个API,也可以是外部链接。只能在更新API时将API状态标记为Deprecated或Decommissioned,而不能在创建时将其标记为Deprecated或Decommissioned。
这只是一个状态,用来区分和告知,并不会实际影响什么。
3.5 使用策略
什么是策略policy?
SAP API Management提供了通过使用策略定义API行为的功能。策略是在运行时执行特定功能的程序。它们提供了在API上添加通用功能的灵活性,而不必每次都单独编写代码。
策略提供了保护API、控制API流量和转换消息格式的特性。还可以通过添加脚本并将它们附加到策略来定制API的行为。
可以在request或response流上应用策略。还可以指定它是否适用于proxy endpoint或target endpoint。我们可以使用SAP Business Accelerator Hub中预定义的策略模版,也可以使用策略编辑器中预定义的策略。
API Management支持多种策略类型:
- Access Control
- Access Entity
- Assign Message
- Basic Authentication
- Extract variables
- Invalidate Cache
- JavaScript
- JSON to XML
- Key Value Map Operations
- Lookup Cache
- Message Logging Policy
- OAuth v2.0
- OAuth v2.0 GET
- OAuth v2.0 SET
- Populate Cache
- Python Script
- Quota
- Raise Fault
- Reset Quota
- Service Callout
- Spike Arrest
- SAML Assertion Policy
- SOAP Message Validation Policy
- Verify API Key
- XML to JSON
- XSL Transform
- XML Threat Protection
- Regular Expression Protection
- JSON Threat Protection
- Response Cache
- Statistics Collector Policy
再看一下策略生效的阶段:
这里要先搞清楚接个概念:
- ProxyEndpoint
传入请求:从外部源(用户应用程序、B2B 资源等)到驻留在 SAP API 管理中的 API Proxy 的请求。
传出响应:从驻留在 SAP API 管理上的 API Proxy发回到原始请求源的数据请求。 - Target endpoint
传入请求:从 SAP API 管理上的 API Proxy到目标终结点的请求。
传出响应:从目标终结点到 SAP API 管理上的 API Proxy的数据响应,以响应从 API Proxy收到的请求。
在查看API时可以看到Proxy EndPoint和Target EndPoint的信息:
解释最清楚的一张图:
3.5.1 安全策略
SAP BTP, API Management基于开放Web应用程序安全项目(OWASP) API安全最佳实践提供了许多开箱即用的API安全策略,还可以根据企业需求进行定制。
有一个博客系列展示SAP BTP API管理的安全策略,保护企业API,这些API安全最佳实践包括身份验证和授权、流量管理、检测云威胁/网络攻击的策略:
3.5.2 日志和监控策略
消息日志记录策略允许将系统日志消息发送到第三方日志管理服务,例如 Splunk、SumoLogic、Loggly 或类似的日志管理服务。参考
3.5.3 使用预定义的策略
SAP Business Accelerator Hub里已经有需要定义好的策略模版可以使用,
在Policy Template下已经有二十多个模版可以参考使用。
可以方便的进行下载和导入。
示例:给ES5服务添加基本认证
这个示例实施主要是两步:
-
在TargetEndpoint的传入请求的PostFlow这个点上增加一个类型为
Assign Message
的策略,这个策略作用是定义两个变量request.header.username 和 request.header.password并且赋了值。
-
依然是在TargetEndpoint的传入请求的PostFlow这个点上增加一个类型为
Basic Authentication
的策略
最终的效果就是 个API可以直接访问而不再需要输入用户名密码
3.6 修改API
3.6.1 Overview
如果把API Export出来的话结构是这样的:
3.6.2 Proxy EndPoint
Route路由
Proxy EndPoint
可以通过Route路由
连接到一个或多个Target EndPoint
。它根据Target EndPoint
配置确定要调用哪个Target EndPoint
。
当有多个目标端点时,可以在路由这里实现一些规则,请求会转发到满足规则的指定的目标端点。
空路由意味着没有定义Target EndPoint
。当不想将请求消息转发到任何Target EndPoint
时,可以定义这样的路由。例如,生成OAuth令牌的流。上图并不是空路由,它是一个default默认路由,当只有一个Target EndPoint时可以使用默认路由。
有关动态路由
故障规则Fault Rule
故障规则
是当API代理为来自应用程序的请求提供服务时,出现错误时如何处理。例如,在与后端服务通信时可能遇到网络问题,应用程序可能提供过期的凭据,请求消息可能格式不正确等等。在这种情况下,以定制的方式处理这些错误就可以比较友好。当API代理遇到错误时,默认行为是从正常处理管道退出并进入错误流。此错误流绕过任何剩余的处理步骤和策略。API平台允许通过定义故障规则来定制异常处理。故障规则
可以附加到代理端点
、目标端点
和路由
规则上。错误规则是一个XML配置元素,它指定:根据预定义的故障分类、子分类或故障名称对故障进行分类的条件定义FaultRule行为的一个或多个策略。
3.6.3 Target EndPoint
3.6.4 Resource
这里用Swagger UI显示所有可能的资源路径和REST操作(GET、PUT、DELETE…)以及所有必要的参数。它通常是自动生成的,但在为SOAP和REST创建API时,这个API资源不会自动生成,需要手工添加。手工即使用OpenAPI来编写资源的详细情况。openAPI规范说明 。更多信息
该描述基于openAPI规范。openAPI规范的可视化是通过swagger UI实现的。swagger Ul是一个开源的JavaScript框架,使api具体化。
右上角菜单,可以直观看出功能:
- No.1 以YAML或JSON格式导入openAPI规范
- No.2 以YAML或JSON格式导出openAPI规范
- No.3 不同的格式进行粘贴(RAML, Data, JSON)
- No.4 生成服务器存根,生成不同语言和框架的服务器实现(Node.js, Java -Spring, Java EE)
3.7 创建产品
SAP API Management中的产品Product
是什么?
产品Product
是出现在SAP API Business Hub Enterprise门户上的工件。使用自己的URL也可以访问SAP API Business Hub Enterprise门户。通过界面右上角的导航访问。
如果没有这个按钮就是缺少权限:
AuthGroup.API.Admin
AuthGroup.API.ApplicationDeveloper