如何使用RestEasy实现HTTP PATCH调用替代原有POST调用
RestEasy 3.0.10.Final POST请求转PATCH请求修改方案
RestEasy 3.0.10.Final对应的是JAX-RS 2.0规范版本,该版本的请求构建器没有提供内置的patch()方法,不能直接把post替换为patch,可以用以下方案修改:
方案1:使用通用method方法指定请求类型(无额外配置,推荐)
仅需要调整最后一行请求触发的代码,手动指定HTTP谓词为PATCH即可,修改后的完整代码如下:
import org.jboss.resteasy.client.jaxrs.ResteasyClient; import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder; import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget; import javax.ws.rs.core.Response; ... ResteasyClient client = new ResteasyClientBuilder().build(); ResteasyWebTarget target = client.target(url); javax.ws.rs.client.Entity<String> entidad = javax.ws.rs.client.Entity.entity(jsonEnviar, "application/json"); // 将原有的post(entidad)替换为method("PATCH", entidad) Response responseWs = target.request().method("PATCH", entidad);
注意事项
- 请确认目标服务端已经支持PATCH请求,包括跨域规则、路由匹配规则的配置
- 如果服务端要求PATCH请求使用专属媒体类型,比如
application/merge-patch+json,把Entity构造的第二个参数替换为对应媒体类型即可
内容的提问来源于stack exchange,提问作者JLLMNCHR
相关产品推荐
相关产品推荐

