Я работаю над веб-приложением RESTful (Django + Piston). Запрос POST отправляет данные, закодированные Json, в веб-приложение. Это отлично работает для всех моих таблиц только для текстовых таблиц, но у меня также есть таблица, в которой хранятся текстовые и двоичные файлы. Каков наилучший способ отправки текстовых и двоичных данных в приложение RESTful?
Опубликовать двоичные данные в приложении RESTful
Ответ 1
Вы можете либо закодировать Base64, либо отправить его в виде строки в сообщении JSON, либо вы можете отправить POST или PUT в качестве отдельного ресурса и ссылаться на него по идентификатору или URL-адресу в сообщении JSON. Последний подход является своего рода внеполосным каналом данных, который довольно распространен в протоколах на основе XML (например, голосовой чат с использованием XMPP).
Вы даже можете легко поддерживать гибридную модель, в которой:
- Маленькое изображение отправляется как
{"base64":"OGZmNjJmOWNhYzFlODE0NDBjYmYzNjhjYz..."}
; - Большое изображение загружается как ссылка,
{"ref":"http://myserver.com/bits/E4304205-29B7-48EE-A359-74250E19EFC4"}
.
Чтобы избежать двойного POST, необходимого для двоичных файлов с внешней ссылкой, вы можете создать какой-то протокол, который позволяет смешивать JSON и двоичные файлы в одной передаче. Но прирост усиления вряд ли будет адекватно вознаграждать этот уровень усилий.
Наконец, с точки зрения дизайна придерживайтесь простого решения, пока оно не станет проблемой.