2.2. 配置 OpenAPI 服务端点
OpenShift Serverless Logic 使用 kogito.sw.operationIdStrategy
属性来生成 REST 客户端,用于调用 OpenAPI 文档中定义的服务。此属性决定了如何为 REST 客户端配置派生配置密钥。
kogito.sw.operationIdStrategy
属性支持以下值: FILE_NAME
、FULL_URI
、FUNCTION_NAME
和 SPEC_TITLE
。
FILE_NAME
OpenShift Serverless Logic 使用 OpenAPI 文档文件名来创建配置密钥。键基于文件名,其中将特殊字符替换为下划线。
配置示例:
quarkus.rest-client.stock_portfolio_svc_yaml.url=http://localhost:8282/ 1
- 1
- OpenAPI File Path 是
src/main/resources/openapi/stock-portfolio-svc.yaml
。为 REST 客户端配置 URL 生成的密钥是stock_portfolio_svc_yaml
FULL_URI
OpenShift Serverless Logic 使用 OpenAPI 文档的完整 URI 路径作为配置密钥。整个 URI 被清理以组成密钥。
Serverless 工作流示例
{ "id": "myworkflow", "functions": [ { "name": "myfunction", "operation": "https://my.remote.host/apicatalog/apis/123/document" } ] ... }
配置示例:
quarkus.rest-client.apicatalog_apis_123_document.url=http://localhost:8282/ 1
- 1
- URI 路径为
https://my.remote.host/apicatalog/apis/123/document
。为 REST 客户端配置 URL 生成的密钥是apicatalog_apis_123_document
。
FUNCTION_NAME
OpenShift Serverless Logic 组合了工作流 ID 和引用 OpenAPI 文档的功能名称来生成配置密钥。
Serverless 工作流示例
{ "id": "myworkflow", "functions": [ { "name": "myfunction", "operation": "https://my.remote.host/apicatalog/apis/123/document" } ] ... }
配置示例:
quarkus.rest-client.myworkflow_myfunction.url=http://localhost:8282/ 1
- 1
- 工作流 ID 是
myworkflow
。函数名称是myfunction
。为 REST 客户端配置 URL 生成的密钥是myworkflow_myfunction
。
SPEC_TITLE
OpenShift Serverless Logic 使用 OpenAPI 文档中的
info.title
值来创建配置键。标题被清理为组成密钥。OpenAPI 文档示例
openapi: 3.0.3 info: title: stock-service API version: 2.0.0-SNAPSHOT paths: /stock-price/{symbol}: ...
配置示例:
quarkus.rest-client.stock-service_API.url=http://localhost:8282/ 1
- 1
- OpenAPI 文档标题为
stock-service API
。为 REST 客户端配置 URL 生成的密钥是stock-service_API
。
2.2.1. 使用 URI 别名
作为 kogito.sw.operationIdStrategy
属性的替代选择,您可以使用 workflow-uri-definitions
自定义扩展为 URI 分配别名。此别名简化了配置过程,并可用作 REST 客户端设置和功能定义中的配置密钥。
workflow-uri-definitions
扩展允许您将 URI 映射到别名,您可以在整个工作流和配置文件中引用。这种方法提供了一种集中管理 URI 及其配置的集中方法。
先决条件
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您可以访问 OpenAPI 规格文件。
流程
在您的工作流中添加
workflow-uri-definitions
扩展。在此扩展中,为您的 URI 创建别名。工作流示例
{ "extensions": [ { "extensionid": "workflow-uri-definitions", 1 "definitions": { "remoteCatalog": "https://my.remote.host/apicatalog/apis/123/document" 2 } } ], "functions": [ 3 { "name": "operation1", "operation": "remoteCatalog#operation1" }, { "name": "operation2", "operation": "remoteCatalog#operation2" } ] }
- 1
- 将扩展 ID 设置为
workflow-uri-definitions
。 - 2
- 通过将
remoteCatalog
别名映射到 URI 来设置别名定义,例如https://my.remote.host/apicatalog/apis/123/document
URI。 - 3
- 使用带有操作标识符的
remoteCatalog
别名来设置功能操作,如operation1
和operation2
操作标识符。在
application.properties
文件中,使用工作流中定义的别名配置 REST 客户端。属性示例
quarkus.rest-client.remoteCatalog.url=http://localhost:8282/
在上例中,配置键被设置为
quarkus.rest-client.remoteCatalog.url
,URL 设置为http://localhost:8282/
,REST 客户端通过引用remoteCatalog
别名来使用它。在工作流中,在定义在 URI 上操作的功能时使用别名。
工作流示例(续):
{ "functions": [ { "name": "operation1", "operation": "remoteCatalog#operation1" }, { "name": "operation2", "operation": "remoteCatalog#operation2" } ] }