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