如何在骆驼路线中使用上下文路径?
How to use the context Path in Camel routes?
我是骆驼的新手。我正在 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")
}
如果在 application.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"
}
为什么会出现这个问题?为什么我还被迫在 application.yml 中指定而不是在路由中只使用一次?感谢大家提供可能的答案
这样做是对的。 RestConfiguration 中的 contextPath 配置用于纯 XML-API 文档。要在调用 Get、Post、Put ... 中激活 contextPath,您需要在 application.properties 中指定它。 Apache Camel 关于使用 servlet 的文档可能对您有所帮助
在 application.properties 上添加 属性 配置:
camel.component.servlet.mapping.context-path=/camel-rest-example/*
然后调用
http://localhost:8080/camel-rest-example/${你的资源-这里}
对于那些 运行 进入这个 post。在我的例子 (3.11.6) 中,属性 是:
application.properties
camel.servlet.mapping.context-path=/myservice/api/v1/*
application.yml
camel:
servlet:
mapping:
context-path: /services/api/v1/*
我是骆驼的新手。我正在 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")
}
如果在 application.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"
}
为什么会出现这个问题?为什么我还被迫在 application.yml 中指定而不是在路由中只使用一次?感谢大家提供可能的答案
这样做是对的。 RestConfiguration 中的 contextPath 配置用于纯 XML-API 文档。要在调用 Get、Post、Put ... 中激活 contextPath,您需要在 application.properties 中指定它。 Apache Camel 关于使用 servlet 的文档可能对您有所帮助
在 application.properties 上添加 属性 配置:
camel.component.servlet.mapping.context-path=/camel-rest-example/*
然后调用
http://localhost:8080/camel-rest-example/${你的资源-这里}
对于那些 运行 进入这个 post。在我的例子 (3.11.6) 中,属性 是:
application.properties
camel.servlet.mapping.context-path=/myservice/api/v1/*
application.yml
camel:
servlet:
mapping:
context-path: /services/api/v1/*