Soy nuevo en camello. estoy haciendo un proyecto en spring-boot usando camel para rutas. Noté que cuando voy a SwaggerUi para ver el correcto funcionamiento de mis llamadas Post, el contextPath de las rutas no funciona:
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") }Este problema no ocurre si en application.yml especifico contextPath de esta manera:
camel: rest: component: servlet binding-mode: json enable-cors: true data-format-property: prettyPrint: false component: servlet: mapping: context-path: /service/*Cuando hago mi llamada Post en un caso funciona, mientras que en el caso de ContextPath en rutas no reconoce el comando y da
{ "timestamp": "2020-11-22T17:44:26.701+0000", "status": 404, "error": "Not Found", "message": "Not Found", "path": "/service/ocs/homologation" }¿Por qué existe este problema? ¿Por qué me veo obligado a especificar también en application.yml en lugar de usarlo solo una vez en las rutas? Gracias a todos por una posible respuesta.
Es correcto que funcione así. la configuración de contextPath en RestConfiguration es para documentación pura de XML-API. Para activar contextPath en sus llamadas Get, Post, Put... debe especificarlo en application.properties. La documentación de Apache Camel sobre el uso del servlet puede ayudarlo
agregue la configuración de propiedad en application.properties:
camel.component.servlet.mapping.context-path=/camel-rest-example/*
y luego llamar
http://localhost:8080/camel-rest-example/${su-recurso-aquí}