@Path и регулярное выражение (Джерси/REST)

Я использую Джерси в проекте REST, и я должен использовать регулярное выражение.

Рытье об этом просто как:

@Path("/resources")
public class MyResource {

   @GET
   @Path("{subResources:.*}")
   public String get(@PathParam("subResources") String subResources) {...}
}

Но, делая как это, метод получает запрос, только если я передаю 1 параметрический усилитель, пример:

ДОБЕРИТЕСЬ:.../resources/firstSubResource

Если я использую более затем 1 параметр, метод не получает запрос, пример:

ДОБЕРИТЕСЬ:.../resources/firstSubResource/seccondSubResource/thirdSubResource


Я только способен к использованию regex, если в моем @Path содержит переменную или текстовое значение, пример:

@Path("{SubResource1}/{subResources:.*}")

Или

@Path("/hardCodeString/{subResources:.*}")

Сегодня я мог работать с этим решением переменной, но не хорошо для своей перспективы.


Мой web.xml

(...)
    <servlet>
        <servlet-name>Jersey Spring Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.myproject.rest</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Spring Web Application</servlet-name>
        <url-pattern>/1.0/*</url-pattern>
    </servlet-mapping>
(...)

Вопрос

  • Кто-либо имеет работавшим с чем-то связанным?
  • Я делаю что-то не так?
  • Я думаю, что это могло быть ошибкой, при работе с более затем одним @Path, один в Классе и другом в Методе.
  • Любые подсказки ценятся!

С уважением

23
задан Paul Bellora 6 August 2013 в 14:51
поделиться

1 ответ

Вы бы возражали против принятия одного PathParam, представляющего коллекцию подресурсов, разделенных каким-либо токеном?

Например ...

@Path("/resources)
public class MyResource {

   @GET
   @Path("{subResources}")
   public String get(@PathParam("subResources") String subResources) 
   {
      String[] params = StringUtils.split(subResources, ";");
   }
}

.. должен обрабатывать

GET: .../resources/firstSubResource
&
GET: .../resources/firstSubResource;seccondSubResource;thirdSubResource
0
ответ дан 29 November 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: