Как отправить пустой ответ на остальной вызов в Apache Camel - PullRequest
0 голосов
/ 30 января 2019

У меня есть служба отдыха для операции удаления, которая фактически ничего не возвращает.Как вернуть ничто () void ответ в качестве ответа в Apache Camel Rest Service

@RequestMapping(value = URI_REMOVE_ACTIVITY_DELETE, method = DELETE)
    public void delete(@PathVariable Long id) {
        super.delete(id, principal);
    } 
    Class<Void> RESULT_URI_REMOVE_ACTIVITY_DELETE = void.class;

1 Ответ

0 голосов
/ 30 января 2019

Это примитивная реализация, которую вы можете усовершенствовать.

public class MyRouteBuilder extends RouteBuilder {

    public void configure() {

        restConfiguration().component("jetty").host("localhost").port("8080");

        rest().produces("application/json").delete("/something/{id}").to("direct:delete");
        from("direct:delete")
                .log("Delete ${in.header.id}")
                .process(exchange -> {
                    String id = exchange.getIn().getHeader("id",String.class);
                    //doDelete(id);
                })
                .setHeader(Exchange.HTTP_RESPONSE_CODE,constant(200));


    }
}

exchange.getIn().getHeader("id",String.class) - это грубый эквивалент @PathVariable.@RequestMapping(value = URI_REMOVE_ACTIVITY_DELETE, method = DELETE) должно стать .delete(URI_REMOVE_ACTIVITY_DELETE)

Ответ от сервера ниже enter image description here

Изменен код с bindingMode, установленным в JSON.

 public void configure() {

    restConfiguration().component("jetty").host("localhost").port("8080").bindingMode(RestBindingMode.json);

    rest().produces("text/plain").delete("/something").to("direct:delete");
    from("direct:delete")
            .process(exchange -> {
                Map<String, Object> requestObject = (Map<String, Object>) exchange.getIn().getBody();
                //doDelete(requestObject.get("id"));
            })
            .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(200));


}
...