2.2. 配置 OpenAPI 服务端点


OpenShift Serverless Logic 使用 kogito.sw.operationIdStrategy 属性来生成 REST 客户端,用于调用 OpenAPI 文档中定义的服务。此属性决定了如何为 REST 客户端配置派生配置密钥。

kogito.sw.operationIdStrategy 属性支持以下值: FILE_NAMEFULL_URIFUNCTION_NAMESPEC_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 规格文件。

流程

  1. 在您的工作流中添加 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 别名来设置功能操作,如 operation1operation2 操作标识符。
  1. application.properties 文件中,使用工作流中定义的别名配置 REST 客户端。

    属性示例

    quarkus.rest-client.remoteCatalog.url=http://localhost:8282/

    在上例中,配置键被设置为 quarkus.rest-client.remoteCatalog.url,URL 设置为 http://localhost:8282/,REST 客户端通过引用 remoteCatalog 别名来使用它。

  2. 在工作流中,在定义在 URI 上操作的功能时使用别名。

    工作流示例(续):

    {
      "functions": [
        {
          "name": "operation1",
          "operation": "remoteCatalog#operation1"
        },
        {
          "name": "operation2",
          "operation": "remoteCatalog#operation2"
        }
      ]
    }

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.