REST - HTTP Post Multipart с JSON

Мне нужно получить HTTP Post Multipart, которая содержит только 2 параметра:

Строка JSONБинарный файл

Как правильно установить тело? Я собираюсь протестировать HTTP-вызов с помощью консоли Chrome REST, поэтому мне интересно, правильное ли решение - установить ключ метки для параметра JSON и двоичного файла.

На стороне сервера я использую Resteasy 2.x, и я собираюсь прочитать тело Multipart следующим образом:

@POST
@Consumes("multipart/form-data")
public String postWithPhoto(MultipartFormDataInput  multiPart) {
  Map <String, List<InputPart>> params = multiPart.getFormDataMap();
  String myJson = params.get("myJsonName").get(0).getBodyAsString();
  InputPart imagePart = params.get("photo").get(0);
  //do whatever I need to do with my json and my photo
}

Это путь? Правильно ли получить мою строку JSON, используя ключ "myJsonName", который идентифицирует это конкретное расположение содержимого? Есть ли другой способ получить эти 2 контента в одном HTTP-запросе?

заранее спасибо

 thermz31 янв. 2012 г., 15:25
На самом деле способ обработки этого ресурса не является полностью RESTful, поскольку изображение является «компонентом» ресурса, а не другим ресурсом.
 user64777231 янв. 2012 г., 15:21
Что это за ресурс REST? Как две части связаны на уровне ресурсов?

Ответы на вопрос(1)

Решение Вопроса

вы хотите составить многокомпонентный запрос вручную с консоли HTTP / REST. Составной формат прост; краткое введение можно найтив спецификации HTML 4.01, Вам нужно придумать границу, то есть строку, не найденную в содержании, скажем,HereGoes, Вы устанавливаете заголовок запросаContent-Type: multipart/form-data; boundary=HereGoes, Тогда это должно быть действительное тело запроса:

--HereGoes
Content-Disposition: form-data; name="myJsonString"
Content-Type: application/json

{"foo": "bar"}
--HereGoes
Content-Disposition: form-data; name="photo"
Content-Type: image/jpeg
Content-Transfer-Encoding: base64

<...JPEG content in base64...>
--HereGoes--
 Vasiliy Faronov12 мар. 2015 г., 21:30
@ и я ни о чем не знаю. Возможно, вы могли бы использоватьUUID, но это не обязательно хорошая идея. Обычно ваша HTTP-библиотека должна позаботиться об этом за вас.
 shane lee28 мар. 2014 г., 01:37
Вы также можете добавить вложение в soap-ui. Это избавляет от необходимости передавать фактическое тело сообщения и тип контента.
 andig11 мар. 2015 г., 18:26
Есть ли стандартизированный способ придумать уникальную границу?
 abbasdgr807 сент. 2014 г., 00:31
Блестящее объяснение!
 thermz31 янв. 2012 г., 16:57
Это именно то, что мне нужно прочитать :-) спасибо

Ваш ответ на вопрос