当前位置: 首页 > 知识库问答 >
问题:

Spring data-rest:通过PATCH请求设置空值

范浩荡
2023-03-14

我想通过发送null请求将null值设置为实体。

例如:

PATCH: "{deleteDate: null}" to http://localhost/api/entity/1

但它不起作用。

我在这里找到了修补程序请求如何处理的信息:

  • 创建一个新的Foo实例
  • Foo填充了与请求一起发送的所有值
  • 加载URI提供id的Foo实体
  • 两个对象之间不同的所有属性都从新Foo复制到持久的Foo,除非新Foo中的值为null。

我对spring-data-rest服务API的补丁请求不能将值设置为NULL的理解正确吗?

共有2个答案

乜栋
2023-03-14

egorlitwinenko的答案中的所有3个选项都将解决所描述的问题,但会有另一个:

  • 在 PATCH 请求中未指定的所有其他属性也将“无效”。

似乎spring-data-rest,issue-345已经在< code>v2.2.x中修复。

祝宏放
2023-03-14

在Spring上下文中,PATCH方法中的空值意味着没有更改。如果你想写空值,你可以

1) 使用PUT方法
2)实现您自己的DomainObjectMerger类,在该类中,您可以使用以下条件扩展方法merge

sourceValue != targetValue;

3)使用DomainObjectMerger.NullHandlingPolicy配置。
取决于您的Spring Data REST版本。

 类似资料:
  • 问题内容: 我对PersonDTO具有以下定义: 这是一个示例记录: 现在,约翰·多伊离婚了。因此,我需要向该URL发送PATCH请求: 带有以下请求正文: 我不知道该怎么做。这是我到目前为止尝试过的: 这是上述问题: 1)由于我仅设置了MaritalStatus,因此其他字段均为null。因此,如果我打印出请求,它将看起来像这样: 这是否意味着我必须先获得GET才能进行PATCH? 2)我得到以

  • 问题内容: 尝试实施ajax登录/注册过程(不带身份验证的刷新站点)。使用Cookie来保存状态。我以为我现在就拥有此功能,但是由于某种原因,浏览器在从服务器取回cookie后仍未设置cookie。有人可以帮忙吗?这是请求和响应头: 请求标题 响应标题 我还在服务器返回的Chrome网络工具中看到了cookie: 响应Cookie 问题答案: 必须通过将“ withCredentials”设置设置

  • 问题内容: 我没有找到解决问题的示例,因此想向你寻求帮助。我不能简单地使用JSON中的RestTemplate对象发送POST请求 每当我得到: 我以这种方式使用RestTemplate: 我怎么了 问题答案: 这项技术对我有用: 我希望这有帮助

  • 如何向以下服务发出GET请求: 我用这个: 我关心的是如何将集合传递为QueryParam。是否可以使用传递的http数据发出GET请求? 谢谢你的帮助。

  • 我使用Postman6.0发送HTTP请求。为了发送请求,我使用请求前脚本获取令牌并将其放入环境中,以便在后续请求中使用它。 下面的脚本不起作用,因为没有发送正文。下面的剧本有什么问题吗?

  • 我搜索了stackoverflow并找到了这个答案,它说这主要是由于equals和hashCode方法造成的,所以我重写了默认的equals和hashCode方法,但错误仍然是一样的(equals方法中使用的是类的一部分)。 那么是什么导致了这个异常,我如何修复它呢?