see*_*ead 19 java tomcat jax-ws jersey
我有一个非常简单的端点使用泽西岛.我的URL是静态的,它不需要任何请求参数.它看起来像这样:
@GET
@Path("/mydata")
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)
public String getData() {
return "{'name': 'value'}";
}
Run Code Online (Sandbox Code Playgroud)
但是,每当我请求此URL时,我总是会收到405状态代码 - 方法不允许.
奇怪的是,如果我更改@Path注释并定义路径变量,例如@Path("/chart/{blah}")它可以正常工作.
有没有人知道为什么我必须定义一个路径变量才能使它工作?我不需要路径变量,添加一个只是为了获得200响应似乎很愚蠢.
see*_*ead 12
谢谢你的建议.它最终让我愚蠢地为我的球衣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>
Run Code Online (Sandbox Code Playgroud)
注释类而不是方法:
@Path("/mydata")
public class MyClass(){
@GET
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)
public String getData() {
return "{'name': 'value'}";
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,但是反过来也会给我带来麻烦