2.95. REST OpenApi


使用 OpenAPI 规格作为合同调用 REST 服务。

2.95.1. 什么是内部

有关用法和配置详情,请参阅上述链接。

2.95.2. Maven 协调

在 code.quarkus.redhat.com 上使用此扩展创建新项目

或者将协调添加到现有项目中:

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-rest-openapi</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

2.95.3. 使用方法

2.95.3.1. 所需的依赖项

在使用 rest-openapi 扩展时,必须有一个 RestProducerFactory 实现。当前已知的扩展有:

  • camel-quarkus-http
  • camel-quarkus-netty-http

Maven 用户需要将这些依赖项之一添加到其 pom.xml 中,例如:

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-http</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

根据用来加载 OpenApi 规格的机制,可能需要额外的依赖项。在使用 file 资源 locator 时,必须将 org.apache.camel.quarkus:camel-quarkus-file 扩展添加为项目依赖项。当使用 refbean 加载规格时,不仅必须添加 org.apache.camel.quarkus:camel-quarkus-bean 依赖项,但 bean 本身必须使用 @RegisterForReflection 注解。

当将 classpath 资源 locator 与原生代码一起使用时,必须在 application.properties 文件的 quarkus.native.resources.includes 属性中指定到 OpenAPI 规格的路径。例如:

quarkus.native.resources.includes=openapi.json
Copy to Clipboard Toggle word wrap

2.95.3.2. 首次开发合同

模型类生成已与 quarkus-maven-plugin 集成。因此,不需要使用 swagger-codegen-maven-plugin,而是将您的合同文件放在 src/main/openapi 中,带有 .json 后缀。并将 generate-code 目标添加到 quarkus-maven-plugin 中,如下所示:

<plugin>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>generate-code</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Copy to Clipboard Toggle word wrap

它需要模型类的特定软件包名称,方法是使用 application.properties 文件的 quarkus.camel.openapi.codegen.model-package 属性。例如:

quarkus.camel.openapi.codegen.model-package=org.acme
Copy to Clipboard Toggle word wrap

此软件包名称也应该添加到 camel.rest.bindingPackageScan 中。

src/main/openapi 中的合同文件需要在 classpath 中添加,因为它们可以在 Camel Rest DSL 中使用。因此您可以在 pom.xml中添加 src/main/openapi

<build>
    <resources>
        <resource>
            <directory>src/main/openapi</directory>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>
Copy to Clipboard Toggle word wrap

在原生模式下运行时,必须指定 quarkus.native.resources.include 等合同文件

quarkus.native.resources.includes=contract.json
Copy to Clipboard Toggle word wrap

2.95.4. 其他 Camel Quarkus 配置

Expand
配置属性类型default

quarkus.camel.openapi.codegen.enabled

如果为 true,则会为 openapi 目录中发现的 .json 文件运行 Camel Quarkus OpenAPI 代码生成。为 false 时,禁用 .json 文件的代码生成。

布尔值

true

quarkus.camel.openapi.codegen.model-package

用于生成的模型类的软件包。

字符串

org.apache.camel.quarkus

quarkus.camel.openapi.codegen.models

要生成的以逗号分隔的模型列表。所有模型都是默认设置。

字符串

 

quarkus.camel.openapi.codegen.use-bean-validation

如果为 true,请在生成的模型类中使用 bean 验证注解。

布尔值

false

quarkus.camel.openapi.codegen.not-null-jackson

如果为 true,请在生成的模型类中使用 NON_NULL Jackson 注解。

布尔值

false

在构建时修复的配置属性。所有其他配置属性可在运行时覆盖。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat