我需要使用Spring的RestTemplate执行 HTTP PATCH 请求调用服务。从所读到的内容来看,我需要使用execute()或exchange()方法,但我不知道如何使用它。服务调用将返回一个HTTP 200 OK状态,以及一个JSON对象,但我对此并不特别感兴趣。
非常感谢您的帮助。
非常感谢您的帮助。
可以使用PATCH动词,但必须使用Apache HTTP客户端库和RestTemplate类的exchange()方法。对于您来说,映射器部分可能不是必需的。下面的EmailPatch类仅包含我们想要在请求中更新的字段。
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.registerModule(new Jackson2HalModule());
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportedMediaTypes(MediaType.parseMediaTypes("application/hal+json"));
converter.setObjectMapper(mapper);
HttpClient httpClient = HttpClients.createDefault();
RestTemplate restTemplate = new RestTemplate(Collections.<HttpMessageConverter<?>> singletonList(converter));
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
EmailPatch patch = new EmailPatch();
patch.setStatus(1);
ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.PATCH, new HttpEntity<EmailPatch>(patch),
String.class);
@RequestMapping(method = RequestMethod.PATCH)
的东西。以下是一个不错的教程:http://www.ibm.com/developerworks/web/library/wa-spring3webserv/index.html - rlegendiRequestMethod
是服务器端的,但问题是关于客户端支持的。RestTemplate
确实支持 PATCH(自 2012 年某个时间点起,https://jira.spring.io/browse/SPR-7985)。所以我真的不确定问题是什么。您尝试过某些事情(什么?),但它没有起作用(您怎么知道的?)吗? - Dave Syer