Spring REST Docs + RequestBody + 防止字段的深层文档

问题描述

我在使用 Spring REST Docs 时遇到问题,并阻止了请求正文中字段的深层文档:

@Transactional
    @RequestMapping(path = "/edit",method = RequestMethod.POST)
    public ResponseEntity<Void> edit(
            @RequestParam("id") Long id,@RequestBody TreeItemResource root)

和文档测试:

@Test
    public void edit() throws Exception {
        
        //...
        
        this.getmockmvc(this.controller).perform(post("/edit"))
                .andDo(document("root",requestFields(
                                subsectionWithPath("childs"))));
        
    }

这个测试需要很多时间,输出如下:

root.childs[].childs[].childs[].childs[].childs[].childs[].path

我怎样才能防止这种情况发生?

解决方法

我找到了解决方案!

注解@RestdocsNotExpanded 就是为了这个目的。您必须注释不应在 REST Api 文档中展开的 DTO 字段。