有可能做那样的事吗?
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()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用RESTEasy.
小智 78
@Path("/{a:path1|path2}")
Run Code Online (Sandbox Code Playgroud)
来自resteasy docs:http://docs.jboss.org/resteasy/docs/1.0.2.GA/userguide/html_single/index.html#_Path_and_regular_expression_mappings
fas*_*seg 17
是的,你可以这样做,虽然你必须重命名你的方法,以便他们的签名是不同的.
更新: 检查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();
}
Run Code Online (Sandbox Code Playgroud)
你可以检查JSR-311的API及其名为"jersey"的参考实现:
Ope*_*ned 10
关于Path注释的一些额外细节......
作为先前的响应状态,正则表达式将在带注释的路径声明映射中使用:
{" variable-name [ ":" regular-expression ] "}
Run Code Online (Sandbox Code Playgroud)
您可以声明多个路径,但是还有一个路径层次结构对我来说不是很明显,其中类注释路径为前面的方法路径注释添加前缀.有人可能会为简洁的多路径选项编写以下类,这可能对资源版本控制很有用.
@Path("/{a:v1|v2}")
@Produces("text/*")
public class BlahResource {
@GET
@Path("/blah")
public Response m1() {
return Response.ok("blah").build();
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,已使用路径"/ v1"或"/ v2"声明类"BlahResource",使资源可访问为:
$ curl localhost:8080/v1/blah
blah
Run Code Online (Sandbox Code Playgroud)
并且
$ curl localhost:8080/v2/blah
blah
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42265 次 |
| 最近记录: |