415使用REST的PUT方法中出现不支持的媒体错误



首先,我想说的是,我是开发的新手,已经开始直接使用REST了。所以,我可能会愚蠢地问一些愚蠢的问题。请提前接受我的道歉!

关于问题-我正在尝试了解如何开发REST API Web服务,因此我开始了一个Mavan项目,使用Archetype-">jersey-quickstart-webapp",并使用ChromePOSTMAN作为REST Client。我在写GET方法方面很成功,但在写PUT时却被打动了。每次我只得到两件事——a)404错误的运行时异常或b)不支持媒体的415错误。

我尝试过@Consumes注释和方法参数(如@FormParam@QueryParam)的不同组合,但没有成功。我既不能成功读取通过PUT从POSTMAN发送到我的应用程序的值,也不能向POSTMAN发回简单的响应。请给我一条可以克服这些小障碍的道路。

我的代码-

package tcs.suraj.learnwebservices;
import java.util.ArrayList;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import tcs.suraj.learnwebservices.domain.MovieBean;
@Path("/movies")
public class Movies {
static ArrayList<MovieBean> movieList = new ArrayList<MovieBean>() ;
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getMovie(){
System.out.println("Under Construction");    
return "Under Construction";
}
@PUT
@Consumes("application/x-www-form-urlencoded")
@Produces(MediaType.TEXT_PLAIN)
public String updateMovie(@FormParam("name") String name){
Response r ;
System.out.println(name +" updated!");
return name;
}
}

我假设您正在使用Tomcat进行部署,请将其添加到web.xml中,然后重试。

<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

注意:我在Tomcat 7.0.53中使用了org.apache.catalina.filters.CorsFilter。我不确定CorsFilter支持的最低版本是什么。

最新更新