首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为JAX-RS添加@PATCH注释?

如何为JAX-RS添加@PATCH注释?
EN

Stack Overflow用户
提问于 2013-07-27 19:18:22
回答 3查看 35.1K关注 0票数 72

JAX-RS有针对GET (@GET)和POST (@POST)等超文本传输协议动词的批注,但没有@PATCH批注。如何才能拥有PATCH HTTP动词的批注?

类似于以下内容:

代码语言:javascript
运行
复制
@PATCH
public Response someCode() {
    // Code to handle the request
}
EN

回答 3

Stack Overflow用户

发布于 2014-07-29 14:54:21

在Jersey中,这将工作得很好,但是当使用Jersey Client测试您的资源类时,您将得到异常:

代码语言:javascript
运行
复制
java.net.ProtocolException: Invalid HTTP method: PATCH

可以通过设置客户端属性来解决此问题

代码语言:javascript
运行
复制
HttpUrlConnectorProvider.SET_METHOD_WORKAROUND 

但是请稍等,然后您将得到以下异常:

代码语言:javascript
运行
复制
javax.ws.rs.ProcessingException: java.net.ProtocolException: HTTP method PATCH doesn't support output

因此,除了更改到Apache HTTP客户端库之外,没有其他方法,使用Jersey版本2.10,它很容易配置为使用Apache HTTP客户端,您只需覆盖扩展JerseyTest的测试类中的客户端配置方法。

代码语言:javascript
运行
复制
@Override
protected void configureClient(ClientConfig config) {
  config.register(CustomJacksonJsonProvider.class);
  ConnectorProvider connectorProvider = new ApacheConnectorProvider();
  config.connectorProvider(connectorProvider);
}

您还需要添加另一个Maven依赖项jersey-apache-connectorjersey-test-framework-provider-external,请参阅Jersey doc

票数 5
EN

Stack Overflow用户

发布于 2017-08-23 13:46:15

JAX-RS API 2.0.1没有补丁。但是,看看JAX-RS API 2.2-SNAPSHOT代码,现在包含了补丁。代码是:

代码语言:javascript
运行
复制
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod(HttpMethod.PATCH)
@Documented
public @interface PATCH {
}

这是link

在2.2发布之前,您可以使用相同的代码进行补救。对于补丁,只需将其替换为“HttpMethod.PATCH”。

票数 1
EN

Stack Overflow用户

发布于 2017-12-19 18:37:38

如果您使用的是CXF3.1.2或更高版本(source),则可以使用org.apache.cxf.jaxrs.ext.PATCH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17897171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档