Почему параметр типа «FormDataMultiPart» трактуется по-разному - PullRequest
2 голосов
/ 14 мая 2019

Я пишу маленькое веб-приложение, загружающее файл на веб-сервер.У меня все заработало, но я озадачился тем фактом, что почти все параметры, отправляемые клиентом (браузером), должны быть на стороне сервера с введенным словом @FormDataParam, за исключением параметра типа FormDataMultiPart.Кто-нибудь может мне это объяснить, пожалуйста?

С уважением, Януш

1 Ответ

2 голосов
/ 14 мая 2019

Как правило, все параметры тела объекта являются параметрами без каких-либо комментариев.Например, в случае JSON или XML вы увидите

@POST
@Consumes({"application/json", "application/xml"})
public Response post(RequestEntity entity) {
}

Здесь MessageBodyReader, который обрабатывает JSON или XML, будет использоваться для десериализации потока сущностей в RequestEntity.

* 1007.* То же самое с FormDataMultiPart.Существует MessageBodyReader для обработки десериализации всего многочастного потока и создания FormDataBodyPart для среды выполнения Джерси для передачи методу ресурса при его вызове.

@FormDataParam трактуется больше как @FormParam@PathParam, @QueryParam и т. Д. У нас может быть несколько параметров.Каждый параметр для этой аннотации представляет отдельную часть многокомпонентного запроса.

Таким образом, у нас есть возможность получить весь запрос в один объект с помощью FormDataMultiPart;в этом случае мы будем извлекать части программно .Или мы можем декларативно извлечь каждую часть, используя аннотацию @FormDataParam, где значением аннотации будет имя части.

Если мы использовали FormDataMultiPart, мы должны были бы извлечь все части вручную из него.Мы будем использовать это в том случае, когда имя каждой части неизвестно.Или есть много частей, где объявление каждой из них не нравится кодеру.

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