2013-04-03 9 views
0

Я пишу REST API, используя Restlet. я в основном с помощью JSON в теле всех моих запросов POST, так что обычный POST выглядит в моем коде:Многопоточная обработка POST с помощью Restlet с телом JSON

@Post("json") 
public Representation storeValue(String value){ 
JSONObject json = (JSONObject) JSONValue.parse(value); 
String uname = (String)json.get("name"); 
...} 

Я получаю JSON строку из тела запроса и разобрать его, сделать свой материал и вернуть ответное представление.

Здесь я хочу сделать еще одну вещь, у меня есть файл (это xml, который, как я думаю, может быть скопирован в json key: value, но я бы предпочел бы избежать этого), который должен быть отправлен в то же самое время время как JSON. Моя идея - попросить моих пользователей api отправить многостраничный запрос с телом как обычный JSON плюс прикрепленный файл.

Я не слишком уверен, как я мог это сделать, я нашел расширение FileUpload Restlet, но очень мало его завершенных примеров, поэтому я не слишком уверен, как его использовать.

В сущности, вопрос заключается в том, как получить тело и файл из многостраничного запроса на отдых в Restlet 2+.

Извините за то, что вы немного расплывчаты, я здесь довольно утерян.

Заранее спасибо.

ответ

1

Вам нужно будет добавить обработку исключений, но я имел успех, подав «многокомпонентные/form-данных» Форма:

@Put 
public Representation uploadFile(final Representation representation){ 

List<FileItem> items = new RestletFileUpload(
     new DiskFileItemFactory()).parseRepresentation(representation); 

... 

Что дает вам список предметов для записи (или те), где isFormField() является ложным. Затем я могу получить доступ к типу мультимедиа (из getContentType() как String в FileItem) и Understream InputStream в качестве содержимого файла. Вы можете быть чем-то более привлекательным, чем напрямую обращаться к потоку, но это все, что мне нужно.

@Put vs @Post - выбор Я оставляю вам

+0

Спасибо! Я думаю, что это сработает, если я получаю данные из формы, но получаю запрос на множественный/родственный тип без каких-либо значений ключа (как и у меня с формой), только с телом и файлом xml, no идентификатор: / – fdhex

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