json - 将 multipart/form-data 内容类型用于 RESTful POST api 是一个好习惯吗?

标签 json rest http restful-architecture

我有一种情况,我必须编写一个 api 来创建一个资源,并且在我需要接受的数据字段中有一个字符串,它基本上是一个 html 文件的内容。正如我所见,我可以选择将整个事物结构化为一个 json 对象,其中该字段是一个带有 urlencoded html string 的字符串字段,并将内容类型设置为 multipart/form-data ,其中每个字段和 html 字符串( UTF-8 编码)是消息的一部分。
不使用 json 是我感到不舒服的事情,因为我觉得在不构建我将要创建的实体的内容时违反了 REST 标准,因此消费者会丢失信息,因为他们无法立即告诉我关于向其提供哪些数据的 api 定义。但实际上 multipart/form-data 可以更好、更高效地处理 html 文件内容之类的东西,因为我不必对其进行 urlencode,并且还可以控制字符编码。
在当前环境下并坚持 RESTful 原则的更好方法是什么?还有其他我应该注意的权衡吗?如何解析一个嵌入了巨大字符串字段(~ 200 Kb)的 json?
编辑 :- 我正在阅读一些关于 SO 的类似问题,其中一种突出的方法是使用元数据进行第一次调用以创建实体,然后将文件作为更新过程上传的两步方法到创建的实体,我们在其中使用 multipart/form-data。在这种情况下,我想,我想问的是,声音是一种方法,在这种方法中,我在单个 api 调用中将元数据和文件作为多部分数据发送,其中每个元数据字段实际上是多部分消息中的一部分,就像文件一样.

最佳答案

将文件上传到 REST API 的规范方法是使用 multipart/form-data。正如 W3 推荐指南所说:

The content type "multipart/form-data" should be used for submitting forms that contain files, non-ASCII data, and binary data.

Multipart/form-data 在表示二进制数据方面优于 base64。坚持REST/Http理念,简化API客户端开发。

Returning values from Forms: multipart/form-data

W3 Recommendation guide

关于json - 将 multipart/form-data 内容类型用于 RESTful POST api 是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30364642/

相关文章:

javascript - Angularjs 资源提供者返回带有数据的 $promise

java - 如何判断Web服务是REST还是SOAP?

python - 获取网页字符集的好用、可靠的快捷方式是什么?

python - 如何使用 Python 在 ASP.Net 中调用回发

json - 如何使用动态值构造 amp-analytics json iframeMessage?

jquery - JavaScript : How can i get a key value inside an array of a JSON object

c# - 在多包八达通作业中选择最新的包版本

json - 使用 Serde 将两种类型转换为一种类型

javascript - 为什么我会超出最大调用堆栈?

java - 检查 HTTP 请求中的图像有效性