将二进制数据发布到RESTful应用程序

时间:2010-10-27 10:09:44

标签: json rest post binary

我正在开发一个RESTful Web应用程序(Django + Piston)。 POST请求将使用Json编码的数据发送到Web应用程序。这适用于我所有仅文本的数据库表,但我也有一个存储文本和二进制文件的表。将文本和二进制数据发布到RESTful应用程序的最佳方法是什么?

1 个答案:

答案 0 :(得分:17)

您可以对其进行Base64编码并将其作为字符串发送到JSON消息中,也可以将二进制文件POST或PUT作为单独的资源,并通过JSON消息中的ID或URL引用它。后一种方法是一种带外数据通道,在基于XML的协议中非常常见(例如,使用XMPP进行语音聊天)。

你甚至可以很容易地支持混合模型,其中:

  1. 小图片以{"base64":"OGZmNjJmOWNhYzFlODE0NDBjYmYzNjhjYz..."};
  2. 的形式发送
  3. 上传大图片作为参考{"ref":"http://myserver.com/bits/E4304205-29B7-48EE-A359-74250E19EFC4"}
  4. 为了避免外部引用的二进制文件所需的双POST,您可以设计一些允许JSON和二进制内容在一次传输中混合的协议。但增量收益不太可能充分奖励这种努力程度。

    最后,从设计的角度来看,坚持使用简单的解决方案直到它成为一个问题。