2.100. REST OpenApi


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

2.100.1. 什么是内部

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

2.100.2. Maven 协调

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

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

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

2.100.3. 使用方法

2.100.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

根据用来加载 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

2.100.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

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

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

此软件包名称也应该添加到 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

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

quarkus.native.resources.includes=contract.json
Copy to Clipboard

2.100.4. 其他 Camel Quarkus 配置

配置属性类型default

quarkus.camel.openapi.codegen.enabled

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

布尔值

true

quarkus.camel.openapi.codegen.model-package

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

string

org.apache.camel.quarkus

quarkus.camel.openapi.codegen.models

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

string

 

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