在我正在开发 RESTful API 的应用程序中,我们希望客户端以 JSON 格式发送数据。此应用程序的一部分要求客户端上传文件(通常是图像)以及有关图像的信息。
我很难跟踪这在单个请求中是如何发生的。是否可以将文件数据 Base64 转换为 JSON 字符串?我需要向服务器执行 2 个帖子吗?我不应该为此使用 JSON 吗?
附带说明一下,我们在后端使用 Grails,并且这些服务由本地移动客户端(iPhone、Android 等)访问,如果有任何影响的话。
最佳答案
我在这里问了一个类似的问题:
How do I upload a file with metadata using a REST web service?
你基本上有三个选择:
- Base64 对文件进行编码,代价是数据大小增加了约 33%,并增加了服务器和客户端用于编码/解码的处理开销。
- 首先在
multipart/form-data
POST 中发送文件,并将 ID 返回给客户端。然后客户端发送带有 ID 的元数据,服务器重新关联文件和元数据。 - 先发送元数据,返回一个ID给客户端。然后客户端发送带有 ID 的文件,服务器重新关联文件和元数据。
关于json - 将文件和相关数据以 JSON 形式发布到 RESTful WebService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4083702/