#java #spring-boot #routes #apache-camel #spring-camel
#java #пружинный ботинок #маршруты #apache-camel #spring-верблюд
Вопрос:
я новичок в camel. я делаю проект в spring-boot, используя camel для маршрутов. Я заметил, что когда я захожу в SwaggerUI, чтобы увидеть правильное функционирование моих вызовов Post, ContextPath маршрутов не работает:
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")
}
Эта проблема не возникает, если в приложении.yml Я указываю ContextPath следующим образом:
camel:
rest:
component: servlet
binding-mode: json
enable-cors: true
data-format-property:
prettyPrint: false
component:
servlet:
mapping:
context-path: /service/*
Когда я делаю свой вызов Post в одном случае, он работает, в то время как в случае ContextPath в маршрутах он не распознает команду и выдает
{
"timestamp": "2020-11-22T17:44:26.701 0000",
"status": 404,
"error": "Not Found",
"message": "Not Found",
"path": "/service/ocs/homologation"
}
Почему существует эта проблема? Почему я вынужден также указывать в приложении.yml вместо того, чтобы использовать его только один раз в маршрутах? Спасибо всем за возможный ответ
Ответ №1:
Правильно, что это работает так. конфигурация ContextPath в RestConfiguration предназначена для чистой документации XML-API. Чтобы активировать ContextPath в ваших вызовах Get, Post, Put … вам нужно указать его в application.properties. Документация Apache Camel по использованию сервлета может вам помочь
Ответ №2:
добавьте конфигурацию свойств в application.properties :
camel.component.servlet.mapping.context-path=/верблюд-отдых-пример/*
а затем вызовите
http://localhost:8080/camel-rest-example /${ваш-ресурс-здесь}
Ответ №3:
Для тех, кто сталкивается с этим сообщением. В моем случае (3.11.6) свойство было:
application.properties
camel.servlet.mapping.context-path=/myservice/api/v1/*
application.yml
camel:
servlet:
mapping:
context-path: /services/api/v1/*