繁体   English   中英

适用于 PDF、图像和 Zip 文件的 Springboot HATEOAS

[英]Springboot HATEOAS for PDF, Image and Zip Files

这是我第一次与 HATEOAS 所有人一起工作,我已经戛然而止。 这是我的问题,我有一个应用程序可以将文本从文本区域转换为 pdf 并将 pdf 转换为图像。 我的问题是我将两者都作为 ResponseEntity<byte[]> 发回。 这是从文本到 pdf 端点的示例成功响应:

    // Get PDF from conversion result
    byte[] res;
    res = this.textToPDFService.convertTextToPdf(input);
    // Create pdf name
    DateFormat dateFormatter = new SimpleDateFormat("dd-MM-yyyy:hh:mm:ss");
    String currentDateTime = dateFormatter.format(new Date());
    // Prepare Headers to open PDF on the client
    String headerKey = "Content-Disposition";
    String headerValue = "inline; filename=pdf_" + currentDateTime + ".pdf";
    // Send a successful response
    return ResponseEntity.ok()
            .header(headerKey, headerValue)
            .contentType(MediaType.APPLICATION_PDF)
            .body(res);

问题:

  1. 如何以 HATEOAS 所需的 JSON 格式发回这些文件并实际接收 PDF 和 zip 文件? 我听说过一些关于 Base64 编码和解码以将其作为字符串处理的信息,但我不太明白它是如何以某种方式创建文件的,以及是否确实如此。
  2. 我不需要 application/pdf 和 application/zip 的请求标头吗?

非常欢迎任何关于如何将这些文件添加到 JSON 响应的其他好的资源。

您可以将这些文件的临时流(下载)链接添加到您的 HATEOAS。

或者您可以返回您生成的编码文件的 base64 值将 pdf 转换为 base64

return ResponseEntity.ok(ENCODED_STRING).build();

实际上,我最终在响应实体中发送了一个 byte[],Springboot 使用 Base64 编码自动对其进行了转换。 然后在客户端,我通过提取对象然后提供我设置的密钥从 LinkedHashMap<String, String> 中的 JSON 接收它。 一旦我有了这个值,我就使用内置的 Base 64 解码器(没有包/外部存储库)对其进行解码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM