我遇到一种情况,我必须编写一个 api 来创建资源,并且在我需要接受的数据字段中是一个基本上是 html 文件内容的字符串。正如我所见,我可以选择将整个事物构造为 json 对象(其中该字段是带有 urlencoded html string 的字符串字段),以及将内容类型设置为 multipart/form-data 其中每个字段和 html 字符串( UTF-8 编码)是消息的一部分。
不使用 json 是我不舒服的事情,因为我觉得不构建我要创建的实体的内容违反了 REST 标准,因此消费者会丢失信息,因为他们无法立即查看我的内容关于向其提供哪些数据的 api 定义。但实际上 multipart/form-data 可以更好、更高效地处理 html 文件内容等内容,因为我不必对其进行 urlencode,并且还可以控制 char 编码。
在当前环境下并坚持 RESTful 原则的更好方法是什么?还有其他我应该注意的权衡吗?解析一个嵌入了巨大字符串字段(~ 200 Kb)的 json 怎么样?
EDIT:- 我正在阅读一些关于 SO 的类似问题,一种突出的方法是两步方法,即使用元数据进行第一次调用来创建实体,然后将文件作为更新过程上传到创建的实体,其中我们使用多部分/表单数据。在这种情况下,我想,我要问的是,我在单个 api 调用中将元数据和文件作为多部分数据发送的方法是如何合理的,其中每个元数据字段实际上是多部分消息中的一部分,就像文件一样。
将文件上传到 REST API 的规范方法是使用 multipart/form-data。正如W3推荐指南所说:
提交时应使用内容类型“multipart/form-data”
包含文件、非 ASCII 数据和二进制数据的表单。
Multipart/form-data 在表示二进制数据方面比 Base64 具有优势。坚持REST/Http理念,简化API客户端的开发。
从表单返回值:multipart/form-data https://www.ietf.org/rfc/rfc2388.txt
W3推荐指南 http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)