apache-camel - 如何在 apache camel 中发送空响应以进行休息呼叫
问题描述
我有删除操作的休息服务,实际上什么都不返回。如何在 Apache 骆驼休息服务中返回 nothing()void 响应作为响应
@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;
解决方案
这是一个可以进一步改进的原始实现。
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)
修改后的代码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));
}
推荐阅读
- mysql - Docker 无法连接到 0.0.0.0 上的 MySql 服务器 (10049)
- swift - Swift如何在swiftui视图中获取response.statuscode
- android - 如果在应用程序被杀死或在后台收到新消息时发送通知的最佳方式
- assembly - 通过添加两个十六进制数字,需要找到标志 Z、N、V 和 C。我发现 Z、N、C 标志是正确的,但 V 应该是 0 而不是 1。为什么?
- linux - 在 chroot 环境中运行 yum groupupdate 时出现文件夹冲突
- java - 将 Java 字符串转换为 PostreSQL 字符变化(«mpaa_rating»)?
- java - 如何检查 ObservableArray 中是否已存在具有重复 LocalDateTime 属性的对象?
- c - 使用 OpenGL 渲染时的多线程对象加载
- c++ - 没有 srcs 的 Bazel cc_library 不能自行编译
- python - 重新启动应用程序中的线程,还是让服务器重新启动整个应用程序是更好的做法?