Reputation: 393
i am new to camel. i am doing a project in spring-boot using camel for routes. I noticed that when I go to SwaggerUi to see the correct functioning of my Post calls the contextPath of the routes does not work:
public void configure() {
restConfiguration().component("servlet").contextPath("service/");
rest("/ocs")
.post("/homologation")
.id(camelRoutesIdConfig.getHomologationRequestRouteId())
.consumes("application/json")
.produces("application/json")
.param()
.name("IntegrationRequestDto")
.type(RestParamType.body)
.required(true)
.description("attivazione nuovo contratto sul portale")
.endParam()
.to("direct:homologation")
}
This problem does not occur if in the application.yml I specify the contextPath like this:
camel:
rest:
component: servlet
binding-mode: json
enable-cors: true
data-format-property:
prettyPrint: false
component:
servlet:
mapping:
context-path: /service/*
When I make my call Post in one case it works, while in the case of ContextPath in routes it doesn't recognize the command and gives
{
"timestamp": "2020-11-22T17:44:26.701+0000",
"status": 404,
"error": "Not Found",
"message": "Not Found",
"path": "/service/ocs/homologation"
}
Why is there this problem? Why am I forced to also specify in the application.yml instead of using it only once in the routes? Thanks to everyone for a possible answer
Upvotes: 8
Views: 5420
Reputation: 53
For those running into this post. In my case (3.11.6), the property was:
application.properties
camel.servlet.mapping.context-path=/myservice/api/v1/*
application.yml
camel:
servlet:
mapping:
context-path: /services/api/v1/*
Upvotes: 5
Reputation: 21
add property configuration on application.properties :
camel.component.servlet.mapping.context-path=/camel-rest-example/*
and then call
http://localhost:8080/camel-rest-example/${your-resource-here}
Upvotes: 2
Reputation: 265
It is right that it works like this. the contextPath configuration in the RestConfiguration is for pure XML-API documentation. To activate the contextPath in your calls Get, Post, Put ... you need to specify it in the application.properties. Apache Camel's documentation on using the servlet may help you
Upvotes: 1