JAX-RS:多个path

有没有可能做这样的事情?

import javax.ws.rs.GET; import javax.ws.rs.Path; public class xxx { @GET @Path(value = "path1") public Response m1() { ... } @GET @Path(value = "path2") public Response m2() { ... } } 

我正在使用RESTEasy。

3 Solutions collect form web for “JAX-RS:多个path”

是的,你可以做到这一点,虽然你将不得不重新命名你的方法,使他们的签名是不同的。

更新: 检查Dieter Cailliau的答案,@ @Path("/{a:path1|path2}") 可能是你想要的…

 public class BlahResource{ @GET @Path("path1") public Response m1(){ return Response.ok("blah").build(); } @GET @Path("path2") public Response m2(){ return this.m1(); } 

你可以检查JSR-311的API,它的参考实现名为“jersey”:

JSR311 API

新泽西

 @Path("/{a:path1|path2}") 

从resteasy文档: http ://docs.jboss.org/resteasy/docs/1.0.2.GA/userguide/html_single/index.html#_Path_and_regular_expression_mappings

关于path注释的一些额外细节…

作为之前的响应状态,在注释的path声明映射中使用正则expression式:

 {" variable-name [ ":" regular-expression ] "} 

您可以声明多个path,但是也有一个path层次结构对我来说不是很明显,因此类注释path为以下方法path注释添加了前缀。 有人可能会写一个简洁的多path选项下面的类,这可能是有用的资源版本。

 @Path("/{a:v1|v2}") @Produces("text/*") public class BlahResource { @GET @Path("/blah") public Response m1() { return Response.ok("blah").build(); } } 

请注意,类“BlahResource”已被声明为path“/ v1”或“/ v2”,使资源可访问为:

 $ curl localhost:8080/v1/blah blah 

并且

 $ curl localhost:8080/v2/blah blah 
  • 泽西岛415不支持的媒体types
  • 如何在JSF框架中实现JAX-RS RESTful服务
  • 如何在JAX-RS中设置响应头,以便用户看到Excel的下载popup窗口?
  • 不能从START_OBJECT标记反序列化java.util.ArrayList的实例
  • JAX-RS中必需的@QueryParam(以及在他们不在时需要做什么)
  • Servlet vs RESTful
  • 我如何获取Jersey JaxRS中的所有查询参数?
  • 如何将JSON对象发布到JAX-RS服务
  • 未findJava类的消息正文编写器
  • 问题Resteasy 3.09 CorsFilter
  • REST APIdevise - 通过REST获取资源,使用不同的参数,但具有相同的url模式