2.101. Rest
Expose REST services and their OpenAPI Specification or call external REST services.
2.101.1. What’s inside 复制链接链接已复制到粘贴板!
-
REST component, URI syntax:
rest:method:path:uriTemplate -
REST API component, URI syntax:
rest-api:path
Refer to the above links for usage and configuration details.
2.101.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</artifactId>
</dependency>
2.101.3. Additional Camel Quarkus configuration 复制链接链接已复制到粘贴板!
This extension depends on the Platform HTTP extension and configures it as the component that provides the REST transport.
When using the platform-http REST transport, some characters are not allowed within path parameter names. This includes the '-' and '$' characters.
In order to make the below example REST /dashed/param route work correctly, a system property is required io.vertx.web.route.param.extended-pattern=true.
import org.apache.camel.builder.RouteBuilder;
public class CamelRoute extends RouteBuilder {
@Override
public void configure() {
rest("/api")
// Dash '-' is not allowed by default
.get("/dashed/param/{my-param}")
.to("direct:greet")
// The non-dashed path parameter works by default
.get("/undashed/param/{myParam}")
.to("direct:greet");
from("direct:greet")
.setBody(constant("Hello World"));
}
}
There is some more background to this in the Vert.x Web documentation.
To use another REST transport provider, such as netty-http or servlet, you need to add the respective extension as a dependency to your project and set the provider in your RouteBuilder. E.g. for servlet, you’d have to add the org.apache.camel.quarkus:camel-quarkus-servlet dependency and the set the provider as follows:
import org.apache.camel.builder.RouteBuilder;
public class CamelRoute extends RouteBuilder {
@Override
public void configure() {
restConfiguration()
.component("servlet");
...
}
}