10

javax.ws.rs.Path在我的 REST 类中使用类来配置路径。它的行为很奇怪......我的配置是这样的......这不是实际的文件,但我已经展示了一个复制来让你理解我的配置。

第一类

@Path("/v2")
public class BoxResource {        
   @POST
   @Path("/ie/box")
   public Response createbox(...) {
     ...
   }
}

2 类

@Path("/v2/ie")
public class BagResource {        
    @POST
    @Path("/bag")
    public Response createbag(...) {
        ...
    }        
}

当我发出类似的 HTTP 请求/v2/ie/box时,它会引发服务器配置错误。但是,如果我像下面这样更改我的 Class2,它就可以正常工作。

@Path("/v2/ie/bag")
public class BagResource {            
    @POST
    public Response createbag(...) {

    }
}

为什么会这样。。@path 在类级别和方法级别的配置是否不同?

4

1 回答 1

16

一个请求/v2/ie/box被映射到,Class2因为它有

@Path("/v2/ie")

作为类注解。

在这种情况下,最长的Path获胜者。Class1从未看过,因为它具有较短的类注释@Path("/v2")

由于Class2没有映射到剩余的方法/box,您将得到一个404 Not Found.

推荐

  1. 在方法上使用@Path注释:和OR@Path("/v2/ie/bag")@Path("/v2/ie/box")
  2. 使用具有 和 的类注释和方法注释的一个资源类。@Path("/v2/ie")@Path("/bag")@Path("/box")

编辑

另请参阅JAX-RS 2.0 规范的“3.7 将请求与资源方法匹配”部分。

于 2013-07-04T13:25:22.447 回答