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 并提供服务.