骆驼Restlet-上下文路径歧义

时间:2018-08-07 17:14:19

标签: rest servlets path apache-camel restlet

我有Spring Boot Camel应用程序,其中使用骆驼式restlet公开了其余的api

示例路线

@Component
public class AppRoute extends RouteBuilder{
    public void configure(CamelContext context){
       from("restlet:employee?restletMethods=GET").log("${body}");
    }
}

该应用程序运行完美(spring-boot:run)。但无法找到暴露该API的路径。日志没有信息。

我点击的每个API都会返回404。日志显示路线已开始。它在哪个路径下运行。以及如何更改?

注意:请不要建议任何基于XML的配置。我可以放在@Configuration下的任何内容都是完美的

3 个答案:

答案 0 :(得分:0)

根据the documentation,restlet端点定义中的URI格式应为:

restlet:restletUrl[?options]

restletUrl的格式应为:

protocol://hostname[:port][/resourcePattern]

因此,您可以按照以下方式定义URI:

from("restlet:http://localhost/employee?restletMethods=GET")

这将使端点在以下URL下可用:

http://localhost/employee

您可以测试哪些在网络浏览器中。

答案 1 :(得分:0)

我会使用像这样的骆驼式马桶组件支持的Rest DSL

restConfiguration().component("restlet").port(8080);

rest("/rest")
   .get("employee")
   .route().log("${body}")
   .endRest();

此路由将侦听以下网址 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;

答案 2 :(得分:0)

使用此处描述的三种配置方法中的第一种: https://restlet.com/open-source/documentation/javadocs/2.0/jee/ext/org/restlet/ext/servlet/ServerServlet.html

您应该能够使用Component对其进行自定义: https://restlet.com/open-source/documentation/javadocs/2.0/jee/api/org/restlet/Component.html?is-external=true

具体参见setServers()方法(或等效的XML)来更改主机名和端口。