我有一种情况,我必须编写一个 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客户端开发。
关于json - 将 multipart/form-data 内容类型用于 RESTful POST api 是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30364642/