泽西岛返回 HTTP 状态 405 - 方法不允许

2022-09-02 10:31:43

我有一个使用泽西岛的非常简单的端点。我的URL是静态的,它不需要任何请求参数。它看起来像这样:

@GET
@Path("/mydata")
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)  
public String getData()  {
  return "{'name': 'value'}";
}

但是,每当我请求此 URL 时,我总是收到 HTTP 状态代码 405 - 方法不允许。

奇怪的是,如果我更改注释并定义一个路径变量,例如 它工作正常。@Path@Path("/chart/{blah}")

有没有人知道为什么我必须定义一个路径变量才能使它工作?我不需要路径变量,添加一个只是为了得到200响应似乎是愚蠢的。


答案 1

感谢您的建议。结果是我愚蠢地为我的球衣SpringServlet输入了一个不正确的url模式。它而不是//*

<servlet>
   <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
</servlet>

<url-pattern>/*</url-pattern>

<servlet-mapping>
   <servlet-name>Chart Service</servlet-name>
   <url-pattern>/*</url-pattern>
</servlet-mapping>

答案 2

为类而不是方法添加批注:

@Path("/mydata")
public class MyClass(){

@GET
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)  
public String getData()  {
  return "{'name': 'value'}";
}

}

我不知道为什么,但它也给我带来了另一个问题


推荐