Массив байтов и строка Base 64 в веб-сервисе RESTful - PullRequest
7 голосов
/ 31 января 2011

Мой веб-сервис REST должен отправить клиенту файл изображения.Я запутался между 2 вариантами: отправить изображение в виде байтового массива, или я должен закодировать его как строку из 64 строк?Каковы плюсы и минусы каждого?Возможно, мне придется сжать изображение с помощью gzip ... это должно создать проблемы с любым из методов?Возможно, мне даже понадобится представить мой метод как службу SOAP, какой метод мне лучше выбрать в этом случае?

Спасибо !!

Ответы [ 2 ]

10 голосов
/ 31 января 2011

Замечательная вещь в интерфейсе RESTful - это просто HTTP. Таким образом, если вы предоставляете версию «байтового массива» через REST, любой браузер может сделать HTTP GET по вашему URL-адресу REST и получить и напрямую отобразить вашего изображения. Возвращение дословно полезных данных гораздо более RESTful, чем наложение кодировки на него. Существует не так много, чтобы рекомендовать дополнительный уровень кодирования base64 через REST.

Если вы возвращаете SOAP, вам абсолютно необходимо вернуть строку base64. Необработанные двоичные данные не совместимы с XML, на котором построен SOAP. Вы можете попытаться обойти это с помощью MTOM , но для совместимости общего назначения с клиентами SOAP вам, вероятно, нужны встроенные данные в кодировке base64.

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

1 голос
/ 31 января 2011

Если ваш сервис возвращает JSON или XML (изображение + некоторая информация), то вам следует кодировать изображение в базе 64, поскольку оба они основаны на строках, и вы хотите передать байтовый массив.Единственный вопрос, должен ли ты сделать это сам или должен быть сделан мой фреймворк, которым ты пользуешься.

Ситуация с GZip ясна - сжимать реле в контейнере сервлетов (например, tomcat - вы можете настроить, нужно ли отправлять ответ).В качестве альтернативы вы можете использовать что-то вроде GZipFilter.

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