加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Spring Data Rest自定义控制器与补丁方法 – 如何将资源与实体合

发布时间:2020-12-15 01:33:33 所属栏目:大数据 来源:网络整理
导读:默认情况下,当我们有一个暴露了save方法的存储库时,我们可以执行PATCH请求.然后,Spring Data REST从数据库中检索原始对象并将更改应用于实体,然后将其保存给我们(在JsonPatchHandler类中).这允许我们为类做以下请求 class Address { Long id; String street;

默认情况下,当我们有一个暴露了save方法的存储库时,我们可以执行PATCH请求.然后,Spring Data REST从数据库中检索原始对象并将更改应用于实体,然后将其保存给我们(在JsonPatchHandler类中).这允许我们为类做以下请求

class Address {
     Long id;
     String street;
     Long houseNumber;
}

PATCH / api /地址/ 1与身体

{ houseNumber: 123 }

只有这一个领域才会改变.

现在有了自定义控制器,我们希望在update方法中接收整个对象(在HATEOAS将其与来自DB的原始对象合并之后)

@RepositoryRestController
@ExposesResourceFor(Address.class)
@ResponseBody
@RequestMapping("/addresses")
public class AdddressController {

    @PatchMapping("/{addressId}")
    public Resource

不幸的是,在我会做一些逻辑的地方,我得到的地址是空字段而不是合并对象.

是否可以在Spring Data REST堆栈中插入自定义控制器,以便在修补请求时将它合并为我(就像它对普通存储库一样)?

编辑:
我想找到一个透明地与PATCH(内容类型:application / json-patch json)和PATCH(内容类型:application / hal json)一起工作的解决方案

最佳答案
浏览Spring源代码后,我找不到合理的解决方案.结果我在他们的 – JIRA中创造了问题

目前唯一合理的解决方法是 – 创建自定义控制器,将PersitentEntityResource作为参数,并在其路径中同时包含{id}和{repository}占位符,即

@PatchMapping("/addresses/{id}/{repository}")
public Resource

这使得调用端点/地址/ 123 /地址

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读