带有可选 Base64 编码的 REST API 标头

Posted

技术标签:

【中文标题】带有可选 Base64 编码的 REST API 标头【英文标题】:Headers for REST API with optional Base64 encoding 【发布时间】:2019-05-18 17:49:13 【问题描述】:

我们有一个媒体文件存储库,其他服务通过 REST API 与之通信。由于各种原因,我们希望存储库的用户能够通过 HTTP 直接上传和下载文件(文本文件为纯文本,二进制文件为字节数组)和使用 Base64 编码。我们希望将文件以 Base64 编码上传(PUT、POST)和请求下载(GET)这一事实反映在 HTTP 请求的标头中。

我们如何反映请求或请求响应的内容在 HTTP 标头中是 Base64 编码的事实?

到目前为止,我倾向于在 Content-Type 标头中的 mime 类型之后附加 ;base64,例如 Content-Type: image/png;base64。其他选项(X- 标头、Content-Encoding)在in this related question 进行了讨论,但没有为我们的问题提供令人满意的解决方案。

【问题讨论】:

【参考方案1】:

您必须使用Content-Transfer-Encoding 标头。

它在 RFC https://www.rfc-editor.org/rfc/rfc2045#page-14.

支持base64等值,如"7bit" / "8bit" / "binary" / "quoted-printable" / "base64" / ietf-token / x-token

此标头专为您的情况设计,用作 MIME 类型的补充。

【讨论】:

HTTP 中没有 Content-Transfer-Encoding。

以上是关于带有可选 Base64 编码的 REST API 标头的主要内容,如果未能解决你的问题,请参考以下文章

在 Django Rest Framework 中接收 Base64 编码的图像并保存到 ImageField

如何使 TensorFlow Hub 模型为 TensorFlow Serving REST 请求做好准备(使用 base64 编码图像)?

使用 Python 进行 base64 解码,并使用基于 REST 的 Gmail API 下载附件

laravel rest api将文件上传到服务器

win api 实现 base64编码解码

Google Speech API - 识别 base64 编码的音频