Как получить карту URL-запроса с помощью Camel rest?

#java #rest #apache-camel

#java #rest #apache-camel

Вопрос:

Как я могу настроить Camel для передачи всех аргументов запроса URL в Map в методе bean?

Учитывая этот пример кода

 @ContextName("camelBean")
public class CamelTestRoute extends RouteBuilder {

    @Override
    public void configure() throws Exception {       
        rest("/foo").description("Test api")
            .consumes("application/json").produces("application/json")
            .get("/stuff").description("get stuff")
                .param().name("key").type(RestParamType.query).description("The key parameter").dataType("string").endParam()
                .responseMessage().code(200).message("The stuff").endResponseMessage()
                .to("bean:camelBean?method=getStuff")
            ;
    }
}

@Named("camelBean")
public class CamelServiceBean {

    public String getStuff(Map<String, String> args) {
        return String.valueOf(args);
    }

}
  

Когда я обращаюсь <camelurl>/foo/stuff?key=asdasd , я хочу getStuff , чтобы меня вызывали с картой, содержащей 'key' => 'asdasd' .

Ответ №1:

Вы можете пометить карту с помощью @Headers

http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Headers.html

 public String getStuff(@Headers Map<String, Object> args) {
    return String.valueOf(args);
}
  

аргументы в конечном итоге будут иметь эту карту.

Смотрите документацию для аннотаций