首页 > 解决方案 > 无法使用 API 网关和招摇下载 PDF

问题描述

我使用 Java 创建了一个 lambda 函数,该函数向 REST API 发出请求并获取经过 base64 编码并从 lambda 返回的字节数组

@Override
public Object handleRequest(final Request<Object> input,final Context 
context)
   //construct request
   Base64 codec = new Base64();
   final HttpResponse response = client.execute(request);
   byte[] pdfResponse = 
   IOUtils.toByteArray(resonse.getEntity().getContent());
   return codec.encode(pdfRespnse); //returns encoded byte array

在 swagger(2.0) 中,我提到过产生:根级别的 [application/pdf] 和模式类型作为响应 200 中的文件。

API 网关设置 -

  1. 将二进制媒体类型设置为“application/pdf”和“application/octet-stream”(也尝试使用 */ * )
  2. 确保 API 网关 - 方法响应包含“200”的 HTTP 状态,响应正文内容类型为“application/pdf”(空模型)
  3. 指定内容处理为转换为二进制。

当我通过邮递员到达端点时,我看到响应中的 UTF-8 编码 JSON 字符串和响应标头为“application/pdf”。当我尝试将请求 Accept 标头设置为“application/pdf”时得到 500 响应(但可以在日志中看到八位字节流和编码字节数组]。我想我在这里唯一缺少的是 isBase64Encoded 属性设置为 true。但我是无法弄清楚如何在我的代码中设置它。对此有什么想法吗?

标签: amazon-web-servicesaws-lambdaswaggeraws-api-gateway

解决方案


推荐阅读