Я использую Джерси в проекте 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>
(...)
Вопрос
С уважением
Вы бы возражали против принятия одного 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