首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在RESTful POST api中使用多部分/表单数据内容类型是一种良好的实践吗?

在RESTful POST api中使用多部分/表单数据内容类型是一种良好的实践吗?
EN

Stack Overflow用户
提问于 2015-05-20 20:32:59
回答 3查看 6.7K关注 0票数 3

在这种情况下,我必须编写一个api来创建一个资源,而在我需要接受的数据字段中,有一个字符串基本上是html文件的内容。在我看来,我可以选择将整个事物构造为一个json对象,其中这个字段是一个带有urlencoded字符串的字符串字段,还是将Content作为多部分/表单数据,其中每个字段和html字符串(UTF-8编码)都是消息的一部分。

不使用json是我不习惯的事情,因为我觉得没有构造我将要创建的实体的内容,这违反了其他标准,因此消费者失去了信息,因为他们无法立即了解我的api定义中要输入哪些数据。但是实际上多部分/表单数据处理类似html文件内容的东西更好,效率更高,因为我不需要对其进行urlencode,也可以控制char编码。

在当前环境下,什么是更好的方法,并坚持RESTful原则?还有其他我应该意识到的权衡吗?如何解析嵌入了一个巨大字符串字段(~ 200 Kb)的json呢?

编辑 :-我读到了一些类似的问题,其中一个突出的方法是使用元数据进行第一次调用来创建实体,然后将文件作为更新过程上传到我们使用多部分/表单-数据创建的实体。在这种情况下,我想我要问的是,声音是一种方法,在一个api调用中将元数据和文件作为多部分数据发送,其中每个元数据字段与文件一样实际上是多部分消息的一部分。

EN

回答 3

Stack Overflow用户

发布于 2015-10-26 20:21:44

将文件上传到REST的规范方法是使用多部分/表单数据。正如W3推荐指南所述:

内容类型“多部分/表单-数据”应用于提交包含文件、非ASCII数据和二进制数据的表单。

多部分/表单数据在表示二进制数据方面优于base64。被粘贴到REST/Http哲学中,并简化了API客户端的开发。

从窗体返回值:多部分/窗体-数据

W3推荐指南

票数 3
EN

Stack Overflow用户

发布于 2015-05-21 13:06:13

好的做法是,每当文件与数据库字段一起上载到服务器时,就使用多部分/表单数据。不要将base64 JSON作为请求发送到Rest,因为它可能破坏文件或降低应用程序的性能。

至于为使用者记录多部分/表单数据Rest,您必须强制API使用者使用您在web服务中预定义的相同的表单字段。

从窗体返回值:多部分/窗体-数据

票数 1
EN

Stack Overflow用户

发布于 2018-01-31 16:21:25

我开始在客户端的任何地方使用FormData对象,而不是常规表单输入字段,用于动态REST。在各种教程中,FormData都是以正面的角度呈现的,所以我也跟着做了。

然而,在将表单数据解码为Go结构时,这给我带来了问题。FormData对象作为“多部分/表单-数据”发送(不管发送的文件是什么),我相信Go中的解码器没有将原始数据转换回字符串表单。最终,我的SQL查询引发了恐慌,因为十六进制数据被发送到了字符串应该在的位置。

因此,经过一些调整,我可以使用FormData,但是我决定恢复到简单的通用建议:只对特殊情况使用"multipart/form-data“,比如在发送文件时。否则,只需使用常规的“application/x form-urlencoded”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30364642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文