Escribo mi documentación de la API REST con muelle Docs.
Código de ejemplo:
@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..
}
Pero el problema es que el resultado de la prueba se responde en una sola línea. Y es muy difícil entender la estructura de los datos devueltos.
Respuesta ejemplo:
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 = []
Además, genero la documentación de la respuesta recibida y en la documentación también sin formato JSON
¿Qué estoy haciendo mal? Cómo habilitar el formato de JSON?
Si no está en condiciones de configurar la aplicación para producir respuestas muy impresos, puede tener descanso Docs lo haga por usted antes de que se está documentando. Esto se describe en la solicitudes y respuestas Personalización de la sección de la documentación:
Pre-procesamiento se configura llamando documento con una
OperationRequestPreprocessor
, y / o unOperationResponsePreprocessor
. Los casos se pueden obtener usando la estáticapreprocessRequest
ypreprocessResponse
métodos enPreprocessors
. Por ejemplo:this.mockMvc.perform(get("/")).andExpect(status().isOk()) .andDo(document("index", preprocessRequest(removeHeaders("Foo")), preprocessResponse(prettyPrint())));
En el caso anterior la solicitud está siendo pre-procesada para eliminar una Foo
cabecera y la respuesta está siendo pre-procesada para que aparezca impreso bastante.