java - restTemplate 删除与正文

标签 java spring rest resttemplate spring-rest

我正在尝试对请求正文执行 DELETE,但我不断收到 400(错误请求)错误。当我在 swagger/postman 中这样做时,它成功地删除了记录。但是从 Java 代码我不能这样做

外部 API 的设计方式需要正文和 URL。它不能改变。请让我知道如何删除带有请求正文的条目

public Person delete(Person person, String url, Map<String, String> uriVariables) throws JsonProcessingException {
        RestTemplate restTemplate = new RestTemplate();
        CustomObjectMapper mapper = new CustomObjectMapper();
        HttpEntity<Person> requestEntity = new HttpEntity<Person>(person);
        try {
            ResponseEntity<Person> responseEntity = restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, Person.class, uriVariables);
            return responseEntity.getBody();
        } catch (RestClientException e) {
            System.out.println(mapper.writeValueAsString(person));
            throw e;
        }
    }

当它出现异常时,我会以 JSON 格式获取 JSON 请求,并且在 Swagger/postman 中同样可以正常工作

我做了一些谷歌搜索,发现restTemplate在有请求正文时删除有问题。这篇文章没有帮助 https://jira.spring.io/browse/SPR-12361有没有办法让它工作

最佳答案

解决此问题的另一种方法是使用 restTemplate.exchange ,这是一个例子:


try {
      String jsonPayload  = GSON.toJson(request);
      HttpEntity<String> entity = new HttpEntity<String>(jsonPayload.toString(),headers());
      ResponseEntity resp = restTemplate.exchange(url, HttpMethod.DELETE, entity, String.class);
} catch (HttpClientErrorException e) {
      /* Handle error */
}

这个解决方案的好处是你可以将它与所有 HttpMethod 类型一起使用。

关于java - restTemplate 删除与正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899641/

相关文章:

java - AEADBadTagException : Input too short - need tag. 如何传递标签?

java - 使用 POJO 进行控制反转和依赖注入(inject)

java - 尝试连接到 https Web 服务时出现 "Received fatal alert: handshake_failure"

rest - HTTP 状态 424 或 500 表示外部依赖项错误

java - 什么是未经检查的类型转换,我该如何检查?

java - 数独检查器 java

rest - 多个dex文件定义Lorg/springframework/http/ContentCodingType$1

java - 如何实现 REST 外观?

java - Spring Webflux : Webclient : Get body on error

java - Spring从webapp到外部jar的依赖注入(inject)