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

标签 web-services http rest jersey jax-rs

我在我的 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")

作为类注解。

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

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

推荐

  1. 在方法上使用@Path注解:@Path("/v2/ie/bag")@路径("/v2/ie/box")
  2. 使用一个资源类,类注解为@Path("/v2/ie"),方法注解为@Path("/bag")@Path("/box")

编辑

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

关于web-services - 类级别和方法级别的@Path配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17471310/

相关文章:

WCF REST 流式传输保持事件连接

ios - swift : Making a get request to Get source code

java - 与 Camel 集成的基于 REST 的服务中的 API 版本管理

Spring,restTemplate 重试 http 503 响应,即使我没有重试机制

c# - Java编码base64,C#解码

web-services - 继续运行 Go Server 作为后台进程

PHP Soap xml 与 SoapUI xml

javascript - 为什么我的回调函数不起作用?

javascript - app.listen() 和 app.get() 如何在 express 和 hapi 上工作

java - 分离 Spring Rest 处理