如何使用 spring restdocs 记录包含 JSON 对象的请求正文

ape*_*dev 1 spring-boot spring-restdocs

我正在使用 spring boot 2 来实现 REST API 服务,并想用 restdocs 记录它。

终点

POST /api/tags
Run Code Online (Sandbox Code Playgroud)

带有请求正文

{"name":"Some Tag", "description":"This is Some Tag"}
Run Code Online (Sandbox Code Playgroud)

用于添加创建新标签。我已经查看了 restdocs 文档,但仍然找不到记录请求正文的 JSON 字段的方法,任何人都可以帮我填写缺少的部分“......”。

TagRequest request = new TagRequest();
request.setName("Some Tag");
request.setDescription("This is Some Tag");
client.post().uri("/api/tags").body(BodyInserters.fromObject(request)).exchange()
        .expectStatus().isOk().expectBody(Integer.class)
        .consumeWith(document("add-tag", ...... )));
Run Code Online (Sandbox Code Playgroud)

Teo*_*ali 8

你需要用户 requestFields

client
                .post().uri("/api/tags")
                .body(BodyInserters.fromObject(request))
                .exchange()
                .expectStatus().isOk()
                .expectBody(Integer.class)
                .consumeWith(
                        document("add-tag",
                                requestFields(
                                        fieldWithPath("name").description("...."),
                                        fieldWithPath("name").description("....")
                                )
                        )
                );
Run Code Online (Sandbox Code Playgroud)

这在官方文档中有记录:https : //docs.spring.io/spring-restdocs/docs/current/reference/html5/#documenting-your-api-request-response-payloads