Jersey REST - 针对不同请求类型的多个方法注释

时间:2013-08-10 20:11:18

标签: rest annotations jersey

给出代码

@POST
public void doSomething() {}

如何让它同时接受@PUT请求?我目前唯一出来的就是

@POST
public void doSomething() {}

@PUT
public void doSomethingPut() {
  doSomething();
}

但我真的不喜欢这种做法。

1 个答案:

答案 0 :(得分:0)

是的,您可以使用PostReplaceFiltercom.sun.jersey.api.container.filter)并将其配置为将该PUT更改为POST。

正如文档所说,它是一个过滤器,支持HTTP方法将POST请求替换为使用另一种HTTP方法的请求,以防止代理或HTTP服务器阻止该HTTP方法。

此过滤器可用于将PUT或DELETE请求替换为POST请求。

如果请求方法是POST并且存在具有非空值的请求标头“X-HTTP-Method-Override”,则会发生替换。该值将是替换POST方法的HTTP方法。

当应用程序部署为Servlet或Filter时,可以使用以下初始化参数注册Jersey过滤器:

<init-param>
     <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
     <param-value>com.sun.jersey.api.container.filter.PostReplaceFilter</param-value>
 </init-param>

检查泽西岛版本,但这是一个示例链接。 https://jersey.java.net/apidocs/1.9/jersey/com/sun/jersey/api/container/filter/PostReplaceFilter.html