RestTemplate 与正文一起删除

2023-11-27

我正在尝试对请求正文进行 DELETE,但我不断收到 400(错误请求)错误。当我在 swagger/postman 中执行此操作时,它成功删除了记录。但从 Java 代码来看我无法做到这一点

外部 API 的设计方式需要 body 和 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 类型一起使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RestTemplate 与正文一起删除 的相关文章

随机推荐

  • 如何创建一个在应用程序运行时始终运行的线程

    编辑 我现在确定问题与while true 循环保存所有其他命令 正如我已注释掉的那样 并且应用程序部署时没有附加的异常 我不确定它有多重要 但我的ServletContextListener实现看起来像这样 public class Bi
  • 迭代计算任意数量的集合的笛卡尔积

    我想计算任意数量的笛卡尔积nonempty在 Java 中设置 我已经写了迭代代码 public static
  • 如何从 netBeans 平台的菜单中删除项目?

    我有模块应用程序 当我运行它时 该应用程序的主窗口有相当复杂的菜单 如何从菜单中删除某些项目 您可以通过向项目的layer xml 文件添加条目来从菜单栏中删除菜单项 你应该通读 NetBeans 平台 HTML 编辑器 教程中的 调整用户
  • “$”的密钥代码是什么?

    我试图禁止在文本输入中输入所有其他字符 Since to get the you have to press the shift key and the 4 key I am not sure how you would get the k
  • R:从 h2o.randomForest() 和 h2o.gbm() 绘制树

    寻找一种有效的方法来在 rstudio H2O 的 Flow 或 h2o 的 RF 和 GBM 模型的本地 html 页面中绘制树木 类似于下面链接中的图像 具体来说 如何为下面的代码 可能通过解析 h2o download pojo rf
  • 将带有千位(和小数)分隔符的字符串转换为双精度

    用户可以输入double进入文本框 数字可能包含千位分隔符 我想在将输入的数字插入数据库之前验证用户输入 是否有一个 C 函数可以转换此类输入 1 555 99 into double 如果有 如果输入无效 它是否会发出错误信号 我不想以类
  • 按组划分的观察数量[重复]

    这个问题在这里已经有答案了 在 R 中 我有一个数据框 其中的观察结果由多个值描述 其中一个值是一个因子 我已按此因素对数据集进行排序 并希望添加一列 在其中我将获得该因素每个级别的大量观察结果 例如 factor obsnum a 1 a
  • ICE03:字符串溢出(大于列中允许的长度);表:自定义操作

    我收到以下代码的 ICE03 字符串溢出警告
  • 使用“.”的 Bash 脚本属性文件在变量名中

    我是 bash 脚本编写新手 对在 bash 脚本中使用 properties 文件中的属性有疑问 我见过一个 bash 属性文件使用 变量名之间 例如 this prop one someProperty 我已经看到它们是从脚本中调用的
  • 如何以编程方式添加 UITabBarController(无 xib 文件或情节提要)

    我想添加一个UITabBarController到我的应用程序 但我只能用代码来完成 没有 xib 文件或故事板 如何完全通过代码来做到这一点 EDIT tbc UITabBarController alloc init aboutUsVi
  • Global.asax 未处理的异常

    我正在通过电子邮件发送来自 global asax 的未处理异常详细信息 如何获取未处理异常的 aspx 文件或程序集文件的路径和 或文件名 当我开发和测试时 此信息显示在异常的堆栈跟踪中 当我将 global asax 部署到生产环境时
  • 实体框架 EF4.1 - 存储过程“在容器中找不到”

    我的数据库中有一个 SP 对于 EF4 1 使用数据库上下文API 从数据模型导入函数后 对存储过程的引用在我的开发环境中工作正常 但是 当发布到服务器时 它会失败并显示类似消息 在容器 TallyJ2Entities 中找不到 Funct
  • java.io.IOException:BufferedInputStream 在 Android 2.3 中已关闭

    以下代码在 Android 1 5 2 2 1 中运行良好 但在 2 3 及更高版本中则不行 BufferedReader rd rd new BufferedReader new InputStreamReader connection
  • 如何在 Git 存储库中移动现有的 Git 子模块?

    我想更改 Git 超级项目中 Git 子模块的目录名称 假设我的目录中有以下条目 gitmodules file submodule emacs d vimpulse path emacs d vimpulse url git gitori
  • 带有 Action 参数的模拟方法

    单元测试新手 c 考虑以下场景 我正在使用 Silverlight 并调用 WCF 服务 Silverlight只能异步调用WCF服务 我围绕 WCF 服务构建了一个包装器 以便可以使用操作参数 使客户端代码更加清晰 所以我有一个检索会议室
  • OAuth 身份验证 iPhone

    我正在做一个 iPhone 应用程序 需要实现 OAuth 2 0 协议才能让用户登录到特定网站 我有在网站上注册我的应用程序后获得的客户端 ID 和客户端密钥 我想了解一些有关此事的事情 我看到了很多与此相关的链接 但在我的脑海中 我不太
  • 通过放置一个列表中的每 n 个项目和另一个列表中的其他项目来合并 Python 列表?

    我有两个清单 list1 and list2 Here len list2 lt lt len list1 现在我想合并两个列表 以便每个第 n 个元素最终名单是from list2 and 其他人来自list1 例如 list1 a b
  • 创建数组的数组列表

    我正在尝试创建字符串数组的数组列表 完成后 我希望数组列表如下所示 0 0 0 1 1 0 1 1 我尝试定义一个数组 然后将其添加到数组列表中 然后重新定义一个数组 再次添加 但数组列表似乎只包含最后一个条目 看一看 String t2
  • SQL Server:一个查询中存在行,而另一个查询中缺少行

    好吧 我想我一定是对 SQL 查询有什么误解 这是一个非常冗长的问题 所以感谢您花时间阅读它 我的问题就在最后 其他一切都只是上下文 我正在编写一个基于复式记账本金的会计系统 资金总是在账户之间移动 一笔交易是 2 笔或更多笔交易Trans
  • RestTemplate 与正文一起删除

    我正在尝试对请求正文进行 DELETE 但我不断收到 400 错误请求 错误 当我在 swagger postman 中执行此操作时 它成功删除了记录 但从 Java 代码来看我无法做到这一点 外部 API 的设计方式需要 body 和 U