【发布时间】:2017-02-24 04:04:25
【问题描述】:
我正在尝试创建一个资源类,以处理各种其他前缀下的类似功能,即“/bar/{id}/foo”“/fizz/{id}/foo”,因为以这种方式对方法进行分组对我来说更有意义。
所以我有一个 Resource 类,它本质上是:
@Path("/")
public class FooResource {
@GET
@Path("/foo")
public String foo()
{
return "Hello Foo";
}
@GET
@Path("/bar/stuff/foo")
public String bar()
{
return ("Hello nested foo.");
}
}
当它在 Dropwizard 应用程序中自行注册时,它工作得很好(即按预期给我响应)。但是,如果另一个 Resource 类注册了一个公共前缀,例如
@Path("/bar")
public class BarResource
{
@GET
@Path("/{id}")
public String bar(@PathParam("id") String id)
{
return "Hello:" + id;
}
}
然后 FooResource 中的子资源永远不会匹配导致 404。然而,在这两种情况下,Dropwizard 都将 FooResource 子资源列为找到的路径。
GET /bar/stuff/foo (FooResource)
GET /bar/{id} (BarResource)
GET /foo (FooResource)
阅读 JAX-RS 规范的第 3.7.2 节,
JSR-339 Java™ API for RESTful Web Services(“规范”)
版本:2.0
状态:最终发布
发布:2013 年 5 月 22 日
这看起来不像它应该的工作方式。由于 bar 资源没有匹配 /bar/stuff/foo 的子资源。我是否遗漏了一些关于它应该如何工作的东西?显然我可以重构我的代码,但我确实更喜欢这种组织方案。
【问题讨论】:
标签: jersey jax-rs dropwizard