2013-09-17 2 views
3

Я работаю, чтобы удовлетворить REST URL из трех типов:Дополнительных пары не работают в джерси с использованием регулярных выражений

  1. url/detail/3 (целое только)
  2. url/detail/hello (String только)
  3. url/detail/3/1d

Для URL 1 и 3 я использую method1 и для URL 2 method2.

Проблема 1: Все запросы типа 1 и 2 соответствуют только методу 2. Хотя я указал целочисленный шаблон в методе 1 для запросов, имеющих целые числа.

Задача 2: Чтобы использовать дополнительные параметры (как в 3) Я использую method1, потому что трикотаж не обеспечивает возможность для дополнительных типов param.But Адреса url/detail/3/1d никогда не совпавших, как указан в методе 1.

Пожалуйста, помогите мне понять, что я делаю неправильно, поскольку я новичок в джерси.

@GET 
@Path("/detail/{id: \\d+}/{time-period:(/time-period/[^/]+?)?}") 

@Produces({ MediaType.APPLICATION_JSON }) 
@Consumes(MediaType.APPLICATION_JSON) 
public JResponse method1(
     @Context HttpHeaders headers, 
     @PathParam("id") String id, 
     @PathParam("time-period") String timePeriod) { 
    if(timePeriod == null || timePeriod.equals("")) 
    { 
     //code 
    } 
    else 
     //code 
} 
@GET 
@Path("/detail/{name}") 
@Produces({ MediaType.APPLICATION_JSON }) 
@Consumes(MediaType.APPLICATION_JSON) 
public JResponse method2(
     @Context HttpHeaders headers, @PathParam("name") String name) { 
    //code 
} 

ответ

1

Возможно, недостающие пробелы приводят к этой проблеме. См Optional @PathParam in Jax-RS

Вы можете определить значения по умолчанию для параметров с @DefaultValue("1000")

0

Вместо сложных регулярных выражений вы, вероятно, следует использовать subresource.

0

@Path ("деталь/{ID} {время-perioid: (/ [^ /] +)?}")

http://x.y.z:4080/analytics/internal/detail/kala

2014-01-17 07: 35: 50509 [http-nio-4080-exec-8] INFO xxx - id: kala

2014-01-17 07: 35: 50,510 [http-nio-4080-exec-8] INFO xxx - период времени:

и

http://x.y.z:4080/analytics/internal/detail/kala/123

2014-01-17 07: 36: 01644 [HTTP-NiO-4080-Exec-9] INFO ххх - ID: калы

2014-01-17 07: 36: 01645 [HTTP-NiO-4080 -exec-9] INFO xxx - период времени:/123

Если идентификатор может быть строковым или целочисленным, я бы проверил его внутри обработчика.

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