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