@DELETE 上的 Jersey 错误:“不支持的 HTTP 方法:DELETE”
Posted
技术标签:
【中文标题】@DELETE 上的 Jersey 错误:“不支持的 HTTP 方法:DELETE”【英文标题】:Jersey error on @DELETE: "Unsupported HTTP method: DELETE" 【发布时间】:2014-12-21 09:24:29 【问题描述】:我在泽西岛做 RESTful 应用程序(部署在 WildFly 8.1.0.Final 上),但我对 @DELETE 的测试方法有疑问。所有其他(GET、POST、PUT)按预期工作。但是,当调用 @DELETE 时,我会收到以下错误消息
Cross-Origin Resource Sharing (CORS) Filter: Unsupported HTTP method: DELETE
我通过 Google Chrome 中的插件测试 RESTful 界面:高级 REST 客户端。我该如何解决?
资源类:为了更清楚,我删除了其他方法。
@Path(value = "destination")
@Produces(MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML)
public class DestinationResource
public DestinationResource()
@DELETE
@Path(value = "/id")
public Response deleteDestination(@PathParam("id") Long id)
//Doing something
return Response.status(Response.Status.OK).build();
编辑:我添加了 CORS.filter 但仍然无法正常工作。这是我的 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html#d4e194 -->
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
<filter>
<!-- The CORS filter with parameters -->
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<!-- Note: All parameters are options, if omitted the CORS
Filter will fall back to the respective default values.
-->
<init-param>
<param-name>cors.allowGenericHttpRequests</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowSubdomains</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, HEAD, POST, PUT, OPTIONS</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>X-Count-records</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.maxAge</param-name>
<param-value>3600</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
【问题讨论】:
向我们展示如何配置 CORS 过滤器。它导致了这个错误,而不是你的 JAX-RS 类。 可能有问题,因为我根本没有配置 CORS 过滤器。 【参考方案1】:<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, HEAD, POST, PUT, OPTIONS</param-value>
</init-param>
你看到 DELETE 列在那里了吗?我没有。
【讨论】:
我也没有看到。愚蠢的错误让我失去了 5 个小时的生命。感谢您的帮助,现在它正在工作。以上是关于@DELETE 上的 Jersey 错误:“不支持的 HTTP 方法:DELETE”的主要内容,如果未能解决你的问题,请参考以下文章
带有 XML 参数的 REST 服务操作上的 HTTP 错误 415 不受支持的媒体类型(Jersey + Jetty)
jersey之get,put,post,delete简单使用
在API上的“post”方法获取“org.glassfish.jersey.message.internal.HeaderValueException”错误
Jersey常用注解解释 @DET@PUT@POST @DELETE等
Hibernate + Jersey + Jackson 随机获得“org.hibernate.TransactionException:不支持嵌套事务”