第 2 章 管理服务
2.1. 配置 OpenAPI 服务 复制链接链接已复制到粘贴板!
OpenAPI 规格 (OAS)为 HTTP API 定义了一个标准的编程语言无关接口。您可以在不访问源代码、额外文档或网络流量检查的情况下了解服务的功能。当使用 OpenAPI 定义服务时,您可以使用最小实施逻辑理解并与之交互。正如接口描述简化了低级别编程一样,OpenAPI 规格 消除了调用服务中的猜测工作。
2.1.1. OpenAPI 功能定义 复制链接链接已复制到粘贴板!
OpenShift Serverless Logic 允许工作流使用函数中的 OpenAPI 规格引用与远程服务交互。
OpenAPI 功能定义示例
operation
属性是由以下参数组成的 字符串
:
-
URI
:引擎使用它来定位规范文件,如classpath
。 - 操作标识符 :您可以在 OpenAPI 规格文件中找到此标识符。
OpenShift Serverless Logic 支持以下 URI 方案:
-
classpath :将它用于位于应用程序项目的
src/main/resources
文件夹中的文件。classpath
是默认的 URI 方案。如果没有定义 URI 方案,则文件位置为src/main/resources/myopenapifile.yaml
。 - file:将它用于位于文件系统中的文件。
- HTTP 或 https :将它们用于远程找到的文件。
确保 OpenAPI 规格文件在构建期间可用。OpenShift Serverless Logic 使用内部代码生成功能在运行时发送请求。构建应用程序镜像后,OpenShift Serverless Logic 将无法访问这些文件。
如果要添加到工作流的 OpenAPI 服务没有规格文件,您可以创建一个或多个服务来生成和公开该文件。
2.1.2. 根据 OpenAPI 规格发送 REST 请求 复制链接链接已复制到粘贴板!
要发送基于 OpenAPI 规格文件的 REST 请求,您必须执行以下步骤:
- 定义功能引用
- 访问工作流状态中定义的功能
先决条件
- 已在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您可以访问 OpenAPI 规格文件。
流程
定义 OpenAPI 功能:
- 识别并访问您要调用的服务的 OpenAPI 规格文件。
将 OpenAPI 规格文件复制到工作流服务目录中,如 <
project_application_dir>/specs
。以下示例显示了 multiplication REST 服务的 OpenAPI 规格:
multiplication REST 服务 OpenAPI 规格示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在工作流中定义功能,请使用 OpenAPI 规格中的
operationId
来引用功能定义中的所需操作。温度转换应用中的函数定义示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
确保您的功能定义引用存储在 <
project_application_dir>/specs
目录中的 OpenAPI 文件的正确路径。
访问工作流状态中定义的功能:
- 定义工作流操作来调用您添加的功能定义。确保每个操作引用之前定义的函数。
使用
functionRef
属性根据其名称引用特定功能。使用 OpenAPI 规格中定义的参数来映射functionRef
中的参数。以下示例演示了在请求路径而不是请求正文中映射参数,您可以参考以下 PetStore API 示例:
工作流中的映射功能参数示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
检查 OpenAPI 规格的
Operation Object
部分,以了解如何在请求中结构参数。 -
使用
jq
表达式从有效负载中提取数据并将其映射到所需参数。确保引擎根据 OpenAPI 规格映射参数名称。 对于在请求路径而不是正文中需要参数的操作,请参阅 OpenAPI 规格中的参数定义。
有关请求路径而不是请求正文中映射参数的更多信息,您可以参阅以下 PetStore API 示例:
映射路径参数示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下是调用函数的示例,在请求路径中只添加了一个名为
petId
的参数:调用 PetStore 功能的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.3. 配置 OpenAPI 服务的端点 URL 复制链接链接已复制到粘贴板!
在访问工作流状态中的函数定义后,您可以配置 OpenAPI 服务的端点 URL。
先决条件
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您已创建了 OpenShift Serverless Logic 项目。
- 您可以访问 OpenAPI 规格文件。
- 您已在工作流中定义了函数定义。
- 您可以访问工作流状态中定义的功能。
流程
-
找到您要配置的 OpenAPI 规格文件。例如,
substraction.yaml
。 -
通过将特殊字符(如
.
)替换为下划线并将字母转换为小写,将文件名转换为有效的配置键。例如,将substraction.yaml
更改为substraction_yaml
。 要定义配置密钥,请使用转换的文件名作为 REST 客户端配置密钥。将此键设置为环境变量,如下例所示:
quarkus.rest-client.subtraction_yaml.url=http://myserver.com
quarkus.rest-client.subtraction_yaml.url=http://myserver.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要防止
application.properties
文件中的硬编码 URL,请使用环境变量替换,如下例所示:quarkus.rest-client.subtraction_yaml.url=${SUBTRACTION_URL:http://myserver.com}
quarkus.rest-client.subtraction_yaml.url=${SUBTRACTION_URL:http://myserver.com}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中:
-
配置密钥:
quarkus.rest-client.subtraction_yaml.url
- 环境变量:SUBTRACTION_URL
-
回退 URL:
http://myserver.com
-
配置密钥:
-
确保在系统或部署环境中设置了
(SUBTRACTION_URL)
环境变量。如果没有找到变量,应用程序将使用回退 URL(http://myserver.com)
。 将配置键和 URL 替换添加到
application.properties
文件中:quarkus.rest-client.subtraction_yaml.url=${SUBTRACTION_URL:http://myserver.com}
quarkus.rest-client.subtraction_yaml.url=${SUBTRACTION_URL:http://myserver.com}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 部署或重启您的应用程序以应用新的配置设置。