Rest API GET 二进制数据响应
Rest API GET response with binary data
我正在处理 Restful API,在内存中我们有一个 Json 格式的对象,客户需要下载这个 json zip 文件格式的对象。
现在我正在使用Vertx来实现这个GET响应,响应需要return一个ZIP格式的二进制数据,基本上是这样的,
JsonObject jsonObject = new JsonObject();
jsonObject.put("a", "a1")
.put("b", "b1");
routingContext
.response()
.setStatusCode(200)
.putHeader("Content-Type", "application/zip")
.....
.....
我不知道如何用 Vertx routingContext 实现它,任何人都可以给点或一些示例代码来实现它吗?
我认为您在方法链中唯一缺少的是最后一行:.end(...);
此方法被多次重载。对于上面的例子,该方法看起来像 .end(Json.encode(jsonObject));
,jsonObject
转换为 String
。我认为这只是示例,因为这将是 return 压缩文件,但无法使用 zip 存档软件打开(因为它显然是 JSON)。
end(...)
方法还接受 io.vertx.core.buffer.Buffer
包中的 Buffer
,也许这就是您正在寻找的 - 将您拥有的数据转换为 Buffer
并提供服务.
我正在处理 Restful API,在内存中我们有一个 Json 格式的对象,客户需要下载这个 json zip 文件格式的对象。
现在我正在使用Vertx来实现这个GET响应,响应需要return一个ZIP格式的二进制数据,基本上是这样的,
JsonObject jsonObject = new JsonObject();
jsonObject.put("a", "a1")
.put("b", "b1");
routingContext
.response()
.setStatusCode(200)
.putHeader("Content-Type", "application/zip")
.....
.....
我不知道如何用 Vertx routingContext 实现它,任何人都可以给点或一些示例代码来实现它吗?
我认为您在方法链中唯一缺少的是最后一行:.end(...);
此方法被多次重载。对于上面的例子,该方法看起来像 .end(Json.encode(jsonObject));
,jsonObject
转换为 String
。我认为这只是示例,因为这将是 return 压缩文件,但无法使用 zip 存档软件打开(因为它显然是 JSON)。
end(...)
方法还接受 io.vertx.core.buffer.Buffer
包中的 Buffer
,也许这就是您正在寻找的 - 将您拥有的数据转换为 Buffer
并提供服务.