#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);
}
аргументы в конечном итоге будут иметь эту карту.
Смотрите документацию для аннотаций