2.100. REST OpenApi
To call REST services using OpenAPI specification as contract.
2.100.1. What’s inside リンクのコピーリンクがクリップボードにコピーされました!
-
REST OpenApi component, URI syntax:
rest-openapi:specificationUri#operationId
Refer to the above link for usage and configuration details.
2.100.2. Maven coordinates リンクのコピーリンクがクリップボードにコピーされました!
Create a new project with this extension on code.camel.redhat.com
Or add the coordinates to your existing project:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-rest-openapi</artifactId>
</dependency>
2.100.3. Usage リンクのコピーリンクがクリップボードにコピーされました!
2.100.3.1. Required Dependencies リンクのコピーリンクがクリップボードにコピーされました!
A RestProducerFactory implementation must be available when using the rest-openapi extension. The currently known extensions are:
- camel-quarkus-http
- camel-quarkus-netty-http
Maven users will need to add one of these dependencies to their pom.xml, for example:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-http</artifactId>
</dependency>
Depending on which mechanism is used to load the OpenApi specification, additional dependencies may be required. When using the file resource locator, the org.apache.camel.quarkus:camel-quarkus-file extension must be added as a project dependency. When using ref or bean to load the specification, not only must the org.apache.camel.quarkus:camel-quarkus-bean dependency be added, but the bean itself must be annotated with @RegisterForReflection.
When using the classpath resource locator with native code, the path to the OpenAPI specification must be specified in the quarkus.native.resources.includes property of the application.properties file. For example:
quarkus.native.resources.includes=openapi.json
2.100.3.2. Contract First Development リンクのコピーリンクがクリップボードにコピーされました!
The model classes generation has been integrated with the quarkus-maven-plugin. So there’s no need to use the swagger-codegen-maven-plugin, instead put your contract files in src/main/openapi with a .json suffix. And add the generate-code goal to the quarkus-maven-plugin like:
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate-code</goal>
</goals>
</execution>
</executions>
</plugin>
It requires a specific package name for the model classes by using the quarkus.camel.openapi.codegen.model-package property of the application.properties file. For example:
quarkus.camel.openapi.codegen.model-package=org.acme
This package name should be added in camel.rest.bindingPackageScan as well.
The contract files in src/main/openapi needs to be added in the classpath since they could be used in Camel Rest DSL. So you can add src/main/openapi in pom.xml
<build>
<resources>
<resource>
<directory>src/main/openapi</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
When running in the native mode, the contract files must be specified the quarkus.native.resources.include like
quarkus.native.resources.includes=contract.json
2.100.4. Additional Camel Quarkus configuration リンクのコピーリンクがクリップボードにコピーされました!
| Configuration property | Type | Default |
|---|---|---|
|
If |
|
|
|
The package to use for generated model classes. |
|
|
|
A comma separated list of models to generate. All models is the default. |
| |
|
If |
|
|
|
If |
|
|
Configuration property fixed at build time. All other configuration properties are overridable at runtime.