第 280 章 示例: PetStore


在 example 目录中的 camel-example-rest-openapi 项目中签出 示例

例如,如果您使用 PetStore 提供的 REST API 只引用 OpenApi 规格中的规范 URI 和所需的操作 ID,或者下载规格并将其作为 openapi.json (在 root 用户)的 CLASSPATH 的形式被自动使用。我们使用 Undertow 组件对 Spring Boot 执行所有请求和 Camel 体验支持。

以下是在 Maven POM 文件中定义的依赖关系:

<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-undertow-starter</artifactId>
</dependency>

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

首先定义 Undertow 组件和 RestOpenApiComponent

@Bean
public Component petstore(CamelContext camelContext, UndertowComponent undertow) {
    RestOpenApiComponent petstore = new RestOpenApiComponent(camelContext);
    petstore.setSpecificationUri("https://petstore3.swagger.io/api/v3/openapi.json");
    petstore.setDelegate(undertow);

    return petstore;
}
Copy to Clipboard Toggle word wrap
注意

对 Spring Boot 的 Camel 的支持将自动创建 UndertowComponent Spring bean,您可以使用带有前缀 camel.component.undertow 的 application.properties (或 application.yml )进行配置。这里定义了 petstore 组件,以便在 Camel 上下文中有一个指定组件,以便我们可以用来与 PetStore REST API 交互,只要 这是我们 以相同方式配置它(使用 application.properties)。

现在,在我们的应用程序中,我们只需使用 ProducerTemplate 调用 PetStore REST 方法:

@Autowired
ProducerTemplate template;

String getPetJsonById(int petId) {
    return template.requestBodyAndHeaders("petstore:getPetById", null, "petId", petId);
}
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat