How to use the context Path in Camel routes?
Asked Answered
P

3

8

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

Phyllys answered 23/11, 2020 at 2:7 Comment(0)
G
1

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

Guacharo answered 25/11, 2020 at 15:15 Comment(0)
P
5

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/* 
Philologian answered 20/5, 2022 at 13:49 Comment(0)
L
2

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}

Lemaceon answered 27/4, 2021 at 0:22 Comment(0)
G
1

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

Guacharo answered 25/11, 2020 at 15:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.