blob: 9db88977f4cf5279e51400135d5f73198362d75c [file] [log] [blame]
This extension depends on the xref:reference/extensions/platform-http.adoc[Platform HTTP] extension
and configures it as the component that provides the REST transport.
### Path parameters containing special characters with platform-http
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`.
[source,java]
----
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 https://vertx.io/docs/vertx-web/java/#_capturing_path_parameters[Vert.x Web documentation].
### Configuring alternate REST transport providers
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:
[source,java]
----
import org.apache.camel.builder.RouteBuilder;
public class CamelRoute extends RouteBuilder {
@Override
public void configure() {
restConfiguration()
.component("servlet");
...
}
}
----