我正在开发一个RESTful Web应用程序(Django + Piston)。 POST请求将使用Json编码的数据发送到Web应用程序。这适用于我所有仅文本的数据库表,但我也有一个存储文本和二进制文件的表。将文本和二进制数据发布到RESTful应用程序的最佳方法是什么?
答案 0 :(得分:17)
您可以对其进行Base64编码并将其作为字符串发送到JSON消息中,也可以将二进制文件POST或PUT作为单独的资源,并通过JSON消息中的ID或URL引用它。后一种方法是一种带外数据通道,在基于XML的协议中非常常见(例如,使用XMPP进行语音聊天)。
你甚至可以很容易地支持混合模型,其中:
{"base64":"OGZmNjJmOWNhYzFlODE0NDBjYmYzNjhjYz..."}
; {"ref":"http://myserver.com/bits/E4304205-29B7-48EE-A359-74250E19EFC4"}
。为了避免外部引用的二进制文件所需的双POST,您可以设计一些允许JSON和二进制内容在一次传输中混合的协议。但增量收益不太可能充分奖励这种努力程度。
最后,从设计的角度来看,坚持使用简单的解决方案直到它成为一个问题。