Отправка двоичных данных в приложение RESTful - PullRequest
15 голосов
/ 27 октября 2010

Я работаю над веб-приложением RESTful (Django + Piston).Запрос POST отправляет данные, закодированные с помощью Json, в веб-приложение.Это прекрасно работает для всех моих текстовых таблиц базы данных, но у меня также есть таблица, в которой хранятся текстовые и двоичные файлы.Как лучше всего разместить текстовые и двоичные данные в приложении RESTful?

1 Ответ

17 голосов
/ 27 октября 2010

Вы можете либо кодировать его Base64, и отправлять в виде строки в сообщении JSON, либо можете POST или PUT двоичный файл как отдельный ресурс и ссылаться на него по идентификатору или URL-адресу в сообщении JSON. Последний подход является своего рода внеполосным каналом передачи данных, который довольно распространен в протоколах на основе XML (например, голосовой чат с использованием XMPP).

Вы могли бы даже довольно легко поддерживать гибридную модель, в результате чего:

  1. Маленькое изображение отправляется как {"base64":"OGZmNjJmOWNhYzFlODE0NDBjYmYzNjhjYz..."};
  2. Большое изображение загружено в качестве ссылки, {"ref":"http://myserver.com/bits/E4304205-29B7-48EE-A359-74250E19EFC4"}.

Чтобы избежать двойного POST, необходимого для двоичных файлов с внешними ссылками, вы можете разработать некоторый протокол, позволяющий смешивать JSON и двоичные файлы за одну передачу. Но вряд ли прирост будет адекватно вознаграждать этот уровень усилий.

Наконец, с точки зрения дизайна, придерживайтесь простого решения, пока оно не станет проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...