web-services – 类级别和方法级别的@Path配置

前端之家收集整理的这篇文章主要介绍了web-services – 类级别和方法级别的@Path配置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的REST类中使用 javax.ws.rs.Path类来配置路径.它表现得很奇怪…我的配置是这样的……这不是实际的文件,但我已经展示了一个复制,让你了解我的配置.

1类

@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(...) {
        ...
    }        
}

当我发出像/ v2 / ie / Box这样的HTTP请求时,它会抛出服务器配置错误.但如果我改变我的Class2如下,它工作正常.

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

    }
}

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

解决方法

对/ v2 / ie / Box的请求被映射到Class2,因为它有
@Path("/v2/ie")

作为类注释.

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

由于Class2没有映射到剩余/框的方法,因此您将获得404 Not Found.

建议

>仅对方法使用@Path注释:@Path(“/ v2 / ie / bag”)和@Path(“/ v2 / ie / Box”)或
>使用一个带有@Path(“/ v2 / ie”)类注释的资源类和@Path(“/ bag”)和@Path(“/ Box”)的方法注释.

编辑

另请参见the JAX-RS 2.0 spec的“3.7匹配资源方法请求”部分.

猜你在找的HTML相关文章