BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite

BTP Integration Suite学习笔记 - (Unit1) Developing with SAP Integration Suite
BTP Integration Suite学习笔记 - (Unit2) Developing with SAP Integration Suite
带着一个问题去学:明明可以直接访问一个后端系统的OData服务,为什么还要再多绕一道CPI?

Unit3. API管理

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第1张图片

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的组成
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第2张图片

  • 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个源头

    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
  • Consumer可以调用的点有两个,一个是调用API Proxy,一个是调用最终的Application

  • Policy是结合API Proxy使用的

也可以这么划分:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第3张图片
从使用者角色的角度看这几部分功能:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第4张图片
API Portal包括了:

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第5张图片

3.3 创建API Provider

API Provider在架构中承担的角色:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第6张图片

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的好处:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第7张图片

  • 可以连接到不同的后端本地/云系统。
  • 发现服务/接口。
  • 简化内部部署连接。
  • 简化后端系统更改时的配置。

示例:
为了在ES5中使用GWSAMPLE_BASIC API,必须生成一个封装初始接口的代理。这个代理通常被称为API Provider。在组件图中,生成的连接和构件以红色突出显示。
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第8张图片
配置过程很简单,跟着这个做就好。

注意创建API Provider之前记得设置一下API Virtual Host
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第9张图片
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第10张图片
值得一提的是,这个地址是一个catalog,它包含了很多个服务。在下面创建API时,如果使用根据API Provider方式创建,还会有一步选择具体服务的步骤。

3.4 创建API(Proxy)

原来叫API Proxy,是因为它充当实际资源API的代理,现在叫API,是相同的概念。
其实应用程序开发人员是可以直接使用相应的服务的,那为什么还要创建一个API代理呢,API Proxy可以掩盖想要公开的服务,API将一个公开可用的HTTP端点映射到后端服务。创建API代理可以让API Management处理保护、分析和监视服务所需的安全性和授权。这就是开头问题的答案,有了这个Proxy的掩护,我们可以用这个API在安全性和分析方面做更多。
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第11张图片
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第12张图片
从上面这幅图可以看出API的创建来源有5处

  1. 手工导入
  2. API Designer 画出来
  3. 根据API Proxy创建
  4. 根据URL创建
  5. 根据API Provider

示例1. Create from API Provider

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第13张图片
示例是根据上一节的API Provider创建一个API, 过程中先选中API Rrovider,然后点击按钮’发现’,会将该catalog下的所有服务都列出来选择。
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第14张图片
选择后会自动填充下面几个字段
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第15张图片
可以注意到这里主机别名已经使用到的Virtual Host ‘cgdemo’。
创建完成后点击’部署’,部署后才可以进行测试。

示例2 Create from URL

下面是使用URL创建API的示例
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第16张图片
这里使用百度地址填写URL
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第17张图片
部署后生成的API地址,测试:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第18张图片

示例3 Create from API Proxy

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第19张图片
注意这里服务类型只能是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状态标记为DeprecatedDecommissioned,而不能在创建时将其标记为DeprecatedDecommissioned

这只是一个状态,用来区分和告知,并不会实际影响什么。

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

再看一下策略生效的阶段:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第20张图片
这里要先搞清楚接个概念:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第21张图片

  • 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的信息:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第22张图片

解释最清楚的一张图:

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第23张图片

3.5.1 安全策略

SAP BTP, API Management基于开放Web应用程序安全项目(OWASP) API安全最佳实践提供了许多开箱即用的API安全策略,还可以根据企业需求进行定制。
有一个博客系列展示SAP BTP API管理的安全策略,保护企业API,这些API安全最佳实践包括身份验证和授权、流量管理、检测云威胁/网络攻击的策略:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第24张图片

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第25张图片

3.5.2 日志和监控策略

消息日志记录策略允许将系统日志消息发送到第三方日志管理服务,例如 Splunk、SumoLogic、Loggly 或类似的日志管理服务。参考

3.5.3 使用预定义的策略

SAP Business Accelerator Hub里已经有需要定义好的策略模版可以使用,
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第26张图片
在Policy Template下已经有二十多个模版可以参考使用。
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第27张图片
可以方便的进行下载和导入。

示例:给ES5服务添加基本认证
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第28张图片
这个示例实施主要是两步:

  1. 在TargetEndpoint的传入请求的PostFlow这个点上增加一个类型为 Assign Message的策略,这个策略作用是定义两个变量request.header.usernamerequest.header.password并且赋了值。
    BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第29张图片
    BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第30张图片

  2. 依然是在TargetEndpoint的传入请求的PostFlow这个点上增加一个类型为Basic Authentication的策略
    BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第31张图片
    BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第32张图片
    最终的效果就是 个API可以直接访问而不再需要输入用户名密码
    BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第33张图片

3.6 修改API

3.6.1 Overview

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第34张图片
如果把API Export出来的话结构是这样的:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第35张图片

3.6.2 Proxy EndPoint

Route路由
Proxy EndPoint可以通过Route路由连接到一个或多个Target EndPoint。它根据Target EndPoint配置确定要调用哪个Target EndPoint
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第36张图片
当有多个目标端点时,可以在路由这里实现一些规则,请求会转发到满足规则的指定的目标端点。
空路由意味着没有定义Target EndPoint。当不想将请求消息转发到任何Target EndPoint时,可以定义这样的路由。例如,生成OAuth令牌的流。上图并不是空路由,它是一个default默认路由,当只有一个Target EndPoint时可以使用默认路由。
有关动态路由

故障规则Fault Rule
故障规则是当API代理为来自应用程序的请求提供服务时,出现错误时如何处理。例如,在与后端服务通信时可能遇到网络问题,应用程序可能提供过期的凭据,请求消息可能格式不正确等等。在这种情况下,以定制的方式处理这些错误就可以比较友好。当API代理遇到错误时,默认行为是从正常处理管道退出并进入错误流。此错误流绕过任何剩余的处理步骤和策略。API平台允许通过定义故障规则来定制异常处理。故障规则可以附加到代理端点目标端点路由规则上。错误规则是一个XML配置元素,它指定:根据预定义的故障分类、子分类或故障名称对故障进行分类的条件定义FaultRule行为的一个或多个策略。

3.6.3 Target EndPoint

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第37张图片

3.6.4 Resource

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第38张图片
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第39张图片
这里用Swagger UI显示所有可能的资源路径和REST操作(GET、PUT、DELETE…)以及所有必要的参数。它通常是自动生成的,但在为SOAP和REST创建API时,这个API资源不会自动生成,需要手工添加。手工即使用OpenAPI来编写资源的详细情况。openAPI规范说明 。更多信息
该描述基于openAPI规范。openAPI规范的可视化是通过swagger UI实现的。swagger Ul是一个开源的JavaScript框架,使api具体化。

右上角菜单,可以直观看出功能:
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第40张图片

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第41张图片
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第42张图片
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第43张图片

  • 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门户。通过界面右上角的导航访问。
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第44张图片
如果没有这个按钮就是缺少权限:
AuthGroup.API.Admin
AuthGroup.API.ApplicationDeveloper

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第45张图片
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第46张图片

3.8 日志记录和监控

健康度监控
BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite_第47张图片

你可能感兴趣的:(BTP,Integration,Suite,学习,笔记)