我使用 Spring REST Docs 编写 API 文档。
代码示例:
@Override
public void getById(String urlTemplate, PathParametersSnippet pathParametersSnippet, Object... urlVariables) throws Exception {
resultActions = mockMvc.perform(get(urlTemplate, urlVariables)
.principal(principal)
.contentType(APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(print());
// do..
}
但问题是测试的结果是一行回答的。并且理解返回数据的结构是非常困难的。
响应示例:
MockHttpServletResponse:
Status = 200
Error message = null
Headers = {Content-Type=[application/json;charset=UTF-8]}
Content type = application/json;charset=UTF-8
Body = {"creator":null,"modifier":null,"modificationTime":null,"creationTime":null,"id":100,"deleted":false,"name":"Name","description":null,"report":[{"creator":"System","modifier":"System","modificationTime":"2019-01-30T14:21:50","creationTime":"2019-01-30T14:21:50","id":1,"name":"Form name","reportType":{"creator":"System","modifier":"System","modificationTime":"2019-01-30T14:21:50","creationTime":"2019-01-30T14:21:50","id":1,"deleted":false,"name":"Raport"},"unmodifiable":true}]}
Forwarded URL = null
Redirected URL = null
Cookies = []
此外,我根据收到的答案生成文档,并且在文档中还生成未格式化的 JSON
我做错了什么?如何启用 json 格式?
最佳答案
如果您无法配置应用程序以生成打印精美的响应,则可以让 REST 文档在记录它们之前为您完成此操作。 Customizing Requests and Responses 中对此进行了描述。文档部分:
Preprocessing is configured by calling document with an
OperationRequestPreprocessor
, and/or anOperationResponsePreprocessor
. Instances can be obtained using the staticpreprocessRequest
andpreprocessResponse
methods onPreprocessors
. For example:this.mockMvc.perform(get("/")).andExpect(status().isOk()) .andDo(document("index", preprocessRequest(removeHeaders("Foo")), preprocessResponse(prettyPrint())));
在上述情况下,正在对请求进行预处理以删除 Foo
header ,并且正在对响应进行预处理以使其显示 pretty-print 内容。
关于java - 如何使用mockMvc在响应正文中格式化Spring REST文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54442972/