第 280 章 示例:PetStore
签出 examples 目录中的 camel-example-rest-openapi 项目中的示例。
例如,如果您想要使用 PetStore 提供的 REST API,只需引用 OpenApi 规范中的规格 URI 和所需的操作 ID,或者下载规格并将其存储为 openapi.json (在 CLASSPATH 中),它将被自动使用。我们使用 Undertow 组件来执行对 Spring Boot 的所有请求和 Camels excelent 支持。
以下是在 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>
首先定义 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;
}
在 Camel for Spring Boot 中支持将自动创建 UndertowComponent Spring bean,您可以使用 application.properties (或 application.yml)配置它,并使用前缀 camel.component.undertow.。我们在这里定义了 petstore 组件,以便在 Camel 上下文中有一个指定组件,我们可用于与 PetStore REST API 交互,如果这是我们唯一可能使用相同的方式(使用 application.properties)进行配置的 rest-openapi 组件。
现在,在我们的应用程序中,我们可以使用 ProducerTemplate 调用 PetStore REST 方法:
@Autowired
ProducerTemplate template;
String getPetJsonById(int petId) {
return template.requestBodyAndHeaders("petstore:getPetById", null, "petId", petId);
}