BTP Integration Suite学习笔记 - (Unit1) Developing with SAP Integration Suite
BTP Integration Suite学习笔记 - (Unit2) Developing with SAP Integration Suite
带着一个问题去学:明明可以直接访问一个后端系统的OData服务,为什么还要再多绕一道CPI?
SAP API Management是一个映射API整个生命周期的解决方案。
再具体一点,它分为:
产品Product
是一组API。它包含特定于业务的元数据,用于监视或分析。例如,所有与CRM相关的api都可以捆绑为一个CRM产品。与其单独发布api,不如将相关api捆绑在一起作为产品发布。在将所需的api包含到产品之后,将产品发布到Catalog,应用程序开发人员可以通过Catalog浏览产品。API Management需要用户分配角色APIPortal.Administrator
。角色具体查看。
API Provider
- Summarizes many different sourcesAPI
- The new API with URL (No. 4)Policies
- Edit the request and response messageProduct
- Implementation of an APIApplication
based on a product后面会有章节详细说明每一个组件,但整体可以看出几点,
API Provider可以由4个源头
Consumer可以调用的点有两个,一个是调用API Proxy
,一个是调用最终的Application
。
Policy
是结合API Proxy
使用的
也可以这么划分:
从使用者角色的角度看这几部分功能:
API Portal包括了:
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
在配置时每种类型需要配置的参数各不相同,具体参考
示例:
为了在ES5中使用GWSAMPLE_BASIC API,必须生成一个封装初始接口的代理。这个代理通常被称为API Provider。在组件图中,生成的连接和构件以红色突出显示。
配置过程很简单,跟着这个做就好。
注意创建API Provider之前记得设置一下API Virtual Host
值得一提的是,这个地址是一个catalog,它包含了很多个服务。在下面创建API时,如果使用根据API Provider方式创建,还会有一步选择具体服务的步骤。
原来叫API Proxy,是因为它充当实际资源API的代理,现在叫API,是相同的概念。
其实应用程序开发人员是可以直接使用相应的服务的,那为什么还要创建一个API代理呢,API Proxy可以掩盖想要公开的服务,API将一个公开可用的HTTP端点映射到后端服务。创建API代理可以让API Management处理保护、分析和监视服务所需的安全性和授权。这就是开头问题的答案,有了这个Proxy的掩护,我们可以用这个API在安全性和分析方面做更多。
从上面这幅图可以看出API的创建来源有5处:
示例是根据上一节的API Provider创建一个API, 过程中先选中API Rrovider,然后点击按钮’发现’,会将该catalog下的所有服务都列出来选择。
选择后会自动填充下面几个字段
可以注意到这里主机别名已经使用到的Virtual Host ‘cgdemo’。
创建完成后点击’部署’,部署后才可以进行测试。
下面是使用URL创建API的示例
这里使用百度地址填写URL
部署后生成的API地址,测试:
注意这里服务类型只能是REST或是SOAP,即使原来的API是ODATA。
另外需要注意的是版本字段也是必输的。当接口发生变化时为了不影响原有接口,可以使用不同的版本,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。
这只是一个状态,用来区分和告知,并不会实际影响什么。
什么是策略policy?
SAP API Management提供了通过使用策略定义API行为的功能。策略是在运行时执行特定功能的程序。它们提供了在API上添加通用功能的灵活性,而不必每次都单独编写代码。
策略提供了保护API、控制API流量和转换消息格式的特性。还可以通过添加脚本并将它们附加到策略来定制API的行为。
可以在request或response流上应用策略。还可以指定它是否适用于proxy endpoint或target endpoint。我们可以使用SAP Business Accelerator Hub中预定义的策略模版,也可以使用策略编辑器中预定义的策略。
API Management支持多种策略类型:
在查看API时可以看到Proxy EndPoint和Target EndPoint的信息:
解释最清楚的一张图:
SAP BTP, API Management基于开放Web应用程序安全项目(OWASP) API安全最佳实践提供了许多开箱即用的API安全策略,还可以根据企业需求进行定制。
有一个博客系列展示SAP BTP API管理的安全策略,保护企业API,这些API安全最佳实践包括身份验证和授权、流量管理、检测云威胁/网络攻击的策略:
消息日志记录策略允许将系统日志消息发送到第三方日志管理服务,例如 Splunk、SumoLogic、Loggly 或类似的日志管理服务。参考
SAP Business Accelerator Hub里已经有需要定义好的策略模版可以使用,
在Policy Template下已经有二十多个模版可以参考使用。
可以方便的进行下载和导入。
在TargetEndpoint的传入请求的PostFlow这个点上增加一个类型为 Assign Message
的策略,这个策略作用是定义两个变量request.header.username 和 request.header.password并且赋了值。
依然是在TargetEndpoint的传入请求的PostFlow这个点上增加一个类型为Basic Authentication
的策略
最终的效果就是 个API可以直接访问而不再需要输入用户名密码
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行为的一个或多个策略。
这里用Swagger UI显示所有可能的资源路径和REST操作(GET、PUT、DELETE…)以及所有必要的参数。它通常是自动生成的,但在为SOAP和REST创建API时,这个API资源不会自动生成,需要手工添加。手工即使用OpenAPI来编写资源的详细情况。openAPI规范说明 。更多信息
该描述基于openAPI规范。openAPI规范的可视化是通过swagger UI实现的。swagger Ul是一个开源的JavaScript框架,使api具体化。
SAP API Management中的产品Product
是什么?
产品Product
是出现在SAP API Business Hub Enterprise门户上的工件。使用自己的URL也可以访问SAP API Business Hub Enterprise门户。通过界面右上角的导航访问。
如果没有这个按钮就是缺少权限:
AuthGroup.API.Admin
AuthGroup.API.ApplicationDeveloper