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

Jersey REST-针对不同请求类型的多个方法注释,rest,annotations,jersey,Rest,Annotations,Jersey,给定代码 @POST public void doSomething() {} 我如何让它同时接受@PUT请求?目前我唯一想说的是 @POST public void doSomething() {} @PUT public void doSomethingPut() { doSomething(); } 但是我真的不喜欢这种方法。是的,您可以使用PostReplaceFilter(com.sun.jersey.api.container.filter)并将其配置为将其更改为POST

给定代码

@POST
public void doSomething() {}
我如何让它同时接受@PUT请求?目前我唯一想说的是

@POST
public void doSomething() {}

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

但是我真的不喜欢这种方法。

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

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

此筛选器可用于将POST请求替换为PUT或DELETE请求

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

当应用程序部署为Servlet或筛选器时,可以使用以下初始化参数注册此筛选器:

<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>

com.sun.jersey.spi.container.ContainerRequestFilters
com.sun.jersey.api.container.filter.PostReplaceFilter
检查您的运动衫版本,但这里有一个示例链接。

一个方法上只能有一个HTTP方法指示符。你提供的方法有什么问题?将PUT和POST方法都委托给一些常用方法对我来说似乎很干净…我需要在形式参数和结果类型方面保持2个方法的同步。这就是我想要避免的。你可能可以用一个(将PUT方法更改为POST)来做一些事情,但这感觉太过分了。你的解决方案是唯一的。。。为什么不尝试将方法体委托给某个辅助类型