Fre*_*Goo 1 java spring spring-mvc-test spring-restdocs
我用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..
}
Run Code Online (Sandbox Code Playgroud)
但是问题是测试结果只能在一行中回答。而且,了解返回数据的结构非常困难。
响应示例:
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 = []
Run Code Online (Sandbox Code Playgroud)
此外,我根据收到的答案生成文档,并且在文档中还使用未格式化的JSON
我究竟做错了什么?如何启用JSON格式?
如果您无法配置应用程序以产生精美的响应,则可以在记录文档之前让REST文档为您完成。在文档的“ 定制请求和响应”部分中对此进行了描述:
通过使用
OperationRequestPreprocessor和和/或调用文档来配置预处理OperationResponsePreprocessor。可以使用上的staticpreprocessRequest和preprocessResponse方法获得实例Preprocessors。例如:Run Code Online (Sandbox Code Playgroud)this.mockMvc.perform(get("/")).andExpect(status().isOk()) .andDo(document("index", preprocessRequest(removeHeaders("Foo")), preprocessResponse(prettyPrint())));
在上述情况下,将对请求进行预处理以除去Foo标头,并对响应进行预处理,以使其看起来漂亮。