RESTeasy和X-HTTP-Method-Override

时间:2012-02-01 16:51:40

标签: java resteasy

是否有任何方式支持X-HTTP-Method-Override请求标头 (自动/透明地)在RESTeasy中?

这会 使支持无法发送PUT / DELETE请求的客户端变得更加容易。

是的,重写POST不太理想,但我认为Google的惯例 使用X-HTTP-Method-Override是一种合理/方便的解决方法。

如果RESTeasy 可以使用X-HTTP-Method-Override标头调度POST请求 自动它将节省大量时间。我认为泽西岛只是添加了一些东 像这样通过过滤方法,但我更喜欢坚持使用RESTeasy。

2 个答案:

答案 0 :(得分:5)

最近我遇到了同样的问题,我找到的最佳解决方案是:

@Provider
@PreMatching
public class OverrideHttpMethodFilter implements ContainerRequestFilter {

@Override
public void filter(ContainerRequestContext requestContext)
        throws IOException {        
    String receivedMethod = requestContext.getMethod();
    String methodFromHeader = requestContext.getHeaderString("X-HTTP-Method-Override");
    if (receivedMethod != null && !receivedMethod.equals(methodFromHeader)) {
        requestContext.setMethod(methodFromHeader);
    }
  }
}

答案 1 :(得分:3)

在RESTeasy处理中,使用拦截器支持头文件,Reference Guide中对此进行了描述。

你想要的,可能是一个截取调用的PreProcessInterceptor,查找标题并根据需要更改方法字符串/重定向。