【发布时间】:2020-07-05 00:09:21
【问题描述】:
我有一个使用 apache camel 的 rest api。当我在一条路线上发出一个发布请求时,它会从 S3 获取一个文件。这是那个的代码 ->
public static class HelloRoute extends RouteBuilder {
@Override
public void configure() {
rest("/")
.post("file-from-s3")
.route()
.setHeader(AWS2S3Constants.KEY, constant("filename"))
.to("aws2-s3://bucketname?accessKey=INSERT&secretKey=INSERT®ion=INSERT&operation=getObject")
.endRest();
}
}
这给出了 Postman 中文件的内容。我想要 json 格式的响应,其中文件的内容将在 json 的 content 键中。如何做到这一点?
【问题讨论】:
-
创建一个与您的 json 格式匹配的 pojo,并使用 json 库(例如 jackson 或 gson)将您的文件映射到 pojo。然后,您可以随意操作 pojo。
-
@SneharghyaPathak 我只是这样做,但问题是我的身体在执行
to语句时属于software.amazon.awssdk.core.ResponseInputStream类型。如何将其转换为字符串?? -
你试过 convertBodyTo(String.class)
-
.process(new org.apache.camel.Processor(){ @Override public void process(Exchange exchange) throws Exception { String data = exchange.getIn().getBody(String.class); Response response = new Response(); response.setContent(data); exchange.getIn().setBody(response); }我写了这个处理器,响应是 pojo。但是 setBody 没有给出文件的输出。 -
@SneharghyaPathak 你能看看这个stackoverflow.com/questions/62763173/…
标签: amazon-web-services amazon-s3 apache-camel