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