Camel Restlet - 上下文路径歧义
Camel Restlet - Context Path Ambiquity
我有 Spring Boot Camel 应用程序,其中使用 camel-restlet 公开了 rest api
示例路线
@Component
public class AppRoute extends RouteBuilder{
public void configure(CamelContext context){
from("restlet:employee?restletMethods=GET").log("${body}");
}
}
应用程序运行完美(spring-boot:run
)。但无法找到 API 暴露在哪个路径下。日志没有信息。
每API我打returns 404。日志显示路由已经启动。在哪个路径下运行。我该如何更改它?
注意: 请不要建议任何基于 XML 的配置。我可以放在 @Configuration
下的任何内容都是完美的
根据the documentation,restlet 端点定义中的 URI 格式应如下所示:
restlet:restletUrl[?options]
其中 restletUrl
应具有以下格式:
protocol://hostname[:port][/resourcePattern]
所以在您的情况下,您可以按以下方式定义 URI:
from("restlet:http://localhost/employee?restletMethods=GET")
这应该使端点在以下 URL 下可用:
http://localhost/employee
您可以测试哪些,例如在网络浏览器中。
我会使用像这样的 camel-restlet 组件支持的 Rest DSL
restConfiguration().component("restlet").port(8080);
rest("/rest")
.get("employee")
.route().log("${body}")
.endRest();
并且这条路由会监听下面的url
http://localhost:8080/rest/employee
编辑:
我想你可以在不使用 Rest DSL
的情况下做类似的事情
String host = InetAddress.getLocalHost().getHostName();
from("restlet:http://" + host + contextPath + "/employee?restletMethods=GET").log("${body}")
可使用以下属性配置端口和上下文路径
camel.component.restlet.port=8686
server.servlet.context-path=/my-path
上下文路径可以通过
注入到routeBuilder中
@Value("${server.servlet.context-path}")
private String contextPath;
使用此处描述的三种配置方法中的第一种:
https://restlet.com/open-source/documentation/javadocs/2.0/jee/ext/org/restlet/ext/servlet/ServerServlet.html
您应该能够使用组件对其进行自定义:
https://restlet.com/open-source/documentation/javadocs/2.0/jee/api/org/restlet/Component.html?is-external=true
请特别查看 setServers() 方法(或 XML 等效方法)来更改主机名和端口。
我有 Spring Boot Camel 应用程序,其中使用 camel-restlet 公开了 rest api
示例路线
@Component
public class AppRoute extends RouteBuilder{
public void configure(CamelContext context){
from("restlet:employee?restletMethods=GET").log("${body}");
}
}
应用程序运行完美(spring-boot:run
)。但无法找到 API 暴露在哪个路径下。日志没有信息。
每API我打returns 404。日志显示路由已经启动。在哪个路径下运行。我该如何更改它?
注意: 请不要建议任何基于 XML 的配置。我可以放在 @Configuration
下的任何内容都是完美的
根据the documentation,restlet 端点定义中的 URI 格式应如下所示:
restlet:restletUrl[?options]
其中 restletUrl
应具有以下格式:
protocol://hostname[:port][/resourcePattern]
所以在您的情况下,您可以按以下方式定义 URI:
from("restlet:http://localhost/employee?restletMethods=GET")
这应该使端点在以下 URL 下可用:
http://localhost/employee
您可以测试哪些,例如在网络浏览器中。
我会使用像这样的 camel-restlet 组件支持的 Rest DSL
restConfiguration().component("restlet").port(8080);
rest("/rest")
.get("employee")
.route().log("${body}")
.endRest();
并且这条路由会监听下面的url http://localhost:8080/rest/employee
编辑: 我想你可以在不使用 Rest DSL
的情况下做类似的事情 String host = InetAddress.getLocalHost().getHostName();
from("restlet:http://" + host + contextPath + "/employee?restletMethods=GET").log("${body}")
可使用以下属性配置端口和上下文路径
camel.component.restlet.port=8686
server.servlet.context-path=/my-path
上下文路径可以通过
注入到routeBuilder中@Value("${server.servlet.context-path}")
private String contextPath;
使用此处描述的三种配置方法中的第一种: https://restlet.com/open-source/documentation/javadocs/2.0/jee/ext/org/restlet/ext/servlet/ServerServlet.html
您应该能够使用组件对其进行自定义: https://restlet.com/open-source/documentation/javadocs/2.0/jee/api/org/restlet/Component.html?is-external=true
请特别查看 setServers() 方法(或 XML 等效方法)来更改主机名和端口。