使用多部分/表单数据是否优于JSON+;Base64?

使用多部分/表单数据是否优于JSON+;Base64?,json,http,base64,multipart,form-data,Json,Http,Base64,Multipart,Form Data,我有一个服务器,我需要将文件和一些字段从客户端上传到服务器。我目前一直在使用标准的多部分/表单数据 然而,我发现使用多部分/表单数据并不理想。我的服务器上的对象可能嵌套了其他对象,因此表示为JSON对象,其中嵌入了其他JSON对象 我希望客户机开始使用JSON表示发出POST/PUT请求,就像它在对服务器的GET请求中所期望的那样,以REST-ful方式。这样,我就不必为了使用多部分/表单数据而将可能嵌套在JSON对象中的两层中的字段展平 问题是,JSON并不表示二进制数据。多部分/表单数据似乎

我有一个服务器,我需要将文件和一些字段从客户端上传到服务器。我目前一直在使用标准的多部分/表单数据

然而,我发现使用多部分/表单数据并不理想。我的服务器上的对象可能嵌套了其他对象,因此表示为JSON对象,其中嵌入了其他JSON对象

我希望客户机开始使用JSON表示发出POST/PUT请求,就像它在对服务器的GET请求中所期望的那样,以REST-ful方式。这样,我就不必为了使用多部分/表单数据而将可能嵌套在JSON对象中的两层中的字段展平

问题是,JSON并不表示二进制数据。多部分/表单数据似乎无法表示嵌套在其他字段值中的字段。但它确实能更好地处理文件上传

我不知道如何设计这个。我是否应该让客户机上传带有base64编码字段的JSON,并获得25%的命中率?或者我应该在多部分/表单数据请求中将JSON对象表示为某种“JSON”变量,并将二进制文件作为另一个变量上载吗

我应该让客户端上传JSON,并将字段编码为 base64,获得25%的命中率

由于4/3=1.33,命中率将为33%

或者我应该将JSON对象表示为某种类型的 多部分/表单数据请求中的“json”变量,并具有二进制 要作为另一个变量上载的文件

这应该行得通


您也可以考虑这个方法:使用多部分发送所有文件,然后获取文件的标识符作为响应。将此标识符放入json中,并以您喜欢的方式发送它。如果您有许多发送文件的场景,那么这种方法可能是有益的:您可能总是使用相同的请求将它们发送到服务器,然后获取它们的标识符;之后,您可以随意使用它们。

最后一种提倡单独调用(一种用于多部分图像,另一种用于JSON数据)的方法很有趣。唯一需要考虑的是两个API调用,而不是一个。当然,这种权衡是特定于应用程序的。说这个有点晚了,但如果您使用2 API调用路径,您还需要处理孤立文件清理,其中文件调用成功,但随后的json调用没有发生。