2016-01-20 1 views
0

Я использую Джерси для реализации ресурса JAX-RS. Я видел много разных примеров в Stack Overflow, различных блогах и Jersey User Guide.Список возможных перегрузок для ресурсов Джерси JAX-RS

Я хотел бы знать, какие различные перегрузки могут быть для данного обработчика ресурсов. Есть ли один источник, где они документированы?

Например, следующее обрабатывает запрос HTTP POST. Тело запроса захватывается как MultivaluedMap.

@POST 
public Response httpPostRequest(MultivaluedMap<String, String> body) 
{ 
    ... 
} 

В качестве альтернативы, следующие перегрузки захватывает тело как единое String.

@POST 
public Response httpPostRequest(String body) 
{ 
    ... 
} 

Есть и другие перегрузки. Сколько их там и где они задокументированы?

ответ

0

Это обычный метод Java, который имеет одну или несколько аннотаций, связанных с ним. Подпись метода не имеет особых ограничений, наложенных на него Джерси.

Сказав, что вы хотите, чтобы убедиться, что различные аннотации (например, @Produces, @Consumes, @PathParam, @QueryParam) применяются к типам данных, которые Джерси знает, как отобразить. Например, у Джерси нет проблем с картографированием @PathParam до String или long. Джерси также может работать с Java-классами с аннотациями JAXB, поэтому ваша подпись метода может включать в себя тип JAXB в сочетании с @Consumes(MediaType.APPLICATION_XML), а Джерси будет преобразовывать содержимое запроса из XML-документа в Java-класс JAXB.

Например:

@GET 
@Produces(MediaType.APPLICATION_XML) 
@Path("somepath") 
public Foos getFoosByQuery(@PathParam("businessName") String businessName, 
     @PathParam("businessUnitName") String businessUnitName, @PathParam("fileType") String fileType, 
     @QueryParam("from") String fromString, @QueryParam("to") String toString, 
     @DefaultValue("10") @QueryParam("interval") int intervalMinutes, 
     @DefaultValue("1000") @QueryParam("limit") int limit, 
     @DefaultValue("false") @QueryParam("errors") boolean errors) { 

Здесь мы видим, что у нас есть много параметров (с типами String, int и boolean) и тип возвращаемого значения, который является JAXB аннотированный POJO. Джерси извлекает значения @PathParam из пути, значения @QueryParam из строки запроса и преобразует возвращаемое значение в документ XML и включает его в качестве содержимого ответа.

Я также отмечу, что имя метода может быть любым, что мы хотим, поэтому концепция «перегрузки» ортогональна Джерси. Нормальные правила перегрузки Java применяются.

Из этого примера должно быть очевидно, что вы не можете перечислить все возможные «перегрузки», которые вы можете использовать с Джерси.

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

+0

Я не понимаю, как подпись может не иметь ограничений. – ksl

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