REST OpenApi
JVM since1.0.0 Native since1.0.0
To call REST services using OpenAPI specification as contract.
What’s inside
-
REST OpenApi component, URI syntax:
rest-openapi:specificationUri#operationId
Please refer to the above link for usage and configuration details.
Maven coordinates
Or add the coordinates to your existing project:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-rest-openapi</artifactId>
</dependency> Check the User guide for more information about writing Camel Quarkus applications.
Usage
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 Contract First Development
Model class generation has been integrated into 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 or .yaml suffix then ensure the generate-code goal is configured on the quarkus-maven-plugin:
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate-code</goal>
</goals>
</execution>
</executions>
</plugin> You can customize the package name of the generated classes by adding configuration property quarkus.camel.openapi.codegen.model-package to application.properties file.
quarkus.camel.openapi.codegen.model-package=org.acme In addition, you should also add this package to configuration property camel.rest.bindingPackageScan.
The contract files in src/main/openapi need to be added in the classpath, since they could be used in the Camel Rest DSL. For example, to do this with Maven:
<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 added to the native image via the quarkus.native.resources.include configuration property.
quarkus.native.resources.includes=contract.json | It’s recommended to configure a base path under which your REST service endpoints will be accessible. Using the default path To set a base path, do any one of the following.
|
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. The default is empty list for all models. |
| |
If |
|
|
If |
|
|
If |
|
|
Additional properties to be used in the mustache templates. |
| |
A comma separated list of OpenAPI spec locations. |
|
Configuration property fixed at build time. All other configuration properties are overridable at runtime.