代码之家  ›  专栏  ›  技术社区  ›  madhairsilence

camel restlet-上下文路径不一致

  •  0
  • madhairsilence  · 技术社区  · 6 年前

    我有一个spring boot camel应用程序,其中使用camel restlet公开restapi

    样品路线

    @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 回复  |  直到 6 年前
        1
  •  0
  •   ltsallas    6 年前

    我将使用camel restlet组件支持的其余dsl,如下所示

    restConfiguration().component("restlet").port(8080);
    
    rest("/rest")
       .get("employee")
       .route().log("${body}")
       .endRest();
    

    此路由将侦听以下URL http://localhost:8080/rest/employee

    编辑: 我想你可以不用其他的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
    

    上下文路径可以通过

    @Value("${server.servlet.context-path}")
    private String contextPath;
    
        2
  •  0
  •   Poger    6 年前

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

    restlet:restletUrl[?options]
    

    在哪里? restletUrl 应具有以下格式:

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

    因此,在您的情况下,可以按以下方式定义uri:

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

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

    http://localhost/employee
    

    你可以在网络浏览器中测试。

        3
  •  0
  •   TacheDeChoco    6 年前

    使用以下三种配置方法中的第一种: 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)以更改主机名和端口。