程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了具有Spring Data Rest功能的自定义Spring MVC HTTP补丁请求大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_262_0@如何解决具有Spring Data Rest功能的自定义Spring MVC http补丁请求? 开发过程中遇到具有Spring Data Rest功能的自定义Spring MVC http补丁请求的问题如何解决?下面主要结合日常开发的经验,给出你关于具有Spring Data Rest功能的自定义Spring MVC http补丁请求的解决方法建议,希望对你解决具有Spring Data Rest功能的自定义Spring MVC http补丁请求有所启发或帮助;

我认为您无法在此处使用spring-data-rest功能。

spring-data-rest在内部使用json-patch库。基本上我认为工作流程如下:

  • 阅读您的实体
  • 使用objectMapper将其转换为Json
  • 应用补丁(这里需要Json-patch)(我认为您的控制器应将JsonPatchOperation的列表作为输入)
  • 将修补的Json合并到您的实体中

我认为最困难的部分是第四点。但是,如果您不必具有通用解决方案,则可能会更容易

如果您想了解spring-data-rest的功能,请查看org.springframework.data.rest.webmvc.config.JsonPatchHandler

在最新数据中,spring-data-rest中的补丁机制发生了显着变化。最重要的是,它不再使用Json-patch库,现在从头开始实现Json补丁支持。

我可以设法在自定义控制器方法中重用主要补丁功能。

以下代码段说明了基于spring-data-rest 2.6的方法

        import org.springframework.data.rest.webmvc.Incomingrequest;
        import org.springframework.data.rest.webmvc.Json.patch.JsonPatchPatchConverter;
        import org.springframework.data.rest.webmvc.Json.patch.Patch;

        //...
        private final ObjectMapper objectMapper;
        //...

        @PatchMapPing(consumes = "application/Json-patch+Json")
        public ResponseEntity<VoID> patch(ServletServerhttprequest request) {
          MyEntity entitytopatch = someRepository.findOne(ID)//retrIEve current state of your entity/object to patch

          Patch patch = convertrequesttopatch(request);
          patch.apply(entitytopatch, MyEntity.class);

          someRepository.save(entitytopatch);
          //...
        }

        private Patch convertrequesttopatch(ServletServerhttprequest request) {  
          try {
            inputStream inputStream =  new Incomingrequest(request).getbody();
            return new JsonPatchPatchConverter(objectMapper).convert(objectMapper.readTree(inputStream));
          } catch (IOException E) {
            throw new UncheckedioException(E);
          }
        }
@H_262_0@解决方法

在自定义Spring MVC控制器中支持http PATCH的最佳实践是什么?特别是在使用HATEOAS /
HAL时?有没有一种更简单的方法来合并对象,而不必检查请求json中每个字段的存在(或编写和维护DTO),最好是自动解组资源链接?

我知道Spring Data Rest中存在此功能,但是可以在定制控制器中使用它吗?

大佬总结

以上是大佬教程为你收集整理的具有Spring Data Rest功能的自定义Spring MVC HTTP补丁请求全部内容,希望文章能够帮你解决具有Spring Data Rest功能的自定义Spring MVC HTTP补丁请求所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。