2012-01-11 2 views
2

Я строю службу REST, принимающую Foo объекты, содержащие комбинацию String и двоичные данные. Это XML, который я получил до сих пор.REST двоичные данные

<foo> 
    <text>regular text</text> 
    <text mime="application/octet-stream">base64 encododed binary data</text> 
</foo> 

Это хорошая идея или есть недостатки, вложенные в большие количества (МБ) двоичных данных?

Как второстепенная деталь конструкции, я пытаюсь установить между использованием <text mime=".."/> или выделенным именем <binary>...</binary> для двоичных данных. Что было бы более последовательным?

ответ

2

Я бы рекомендовал включить в свой запрос/ответ xml только место, где вы будете хранить двоичные данные, которые вы хотите передать, а затем извлекать эти данные, выполняющие другой запрос. минусов этого решения будут выполнять другой запрос, но профи на вашей стороне:

  • нет необходимости сериализации/десериализации ваших 64 строки
  • легче тестирования Вашего отдыха WS
  • менее раздутого XML
+0

Я согласен, что это было бы RESTful, но IMO не прагматично. Сериализация является однострочным/аннотацией, например, jaxb. –

0

HTTP предназначен для передачи полезных нагрузок произвольной длины. Отправка МБ данных будет прекрасной. Передача данных с помощью кодирования base64 не рекомендуется, так как она будет увеличить количество байтов, которое вы должны отправить по кабелю, ухудшая пропускную способность.

Я бы предположил вместо этого, что вы считаете multipart mime type, а не XML.

0

какой у вас контейнер webservice? формат xml будет генерироваться вашим двоичным сериализатором. axis2 может быть хорошо для вас. он основан на аксиоме, предлагающей прямую двоичную поддержку

+0

Tomcat 6 с контроллерами пружин, данные, сериализованные с помощью JAXB. –

Смежные вопросы