Spring REST Docs询问@RestController?

时间:2016-10-13 19:35:12

标签: spring spring-restdocs

我正在查看Spring REST Docs并想知道它是否能够查询@RestController方法来生成描述Rest API的基本文档(方法,http方法,参数,响应类型)?我相信Springfox Spring / Swagger可以做到这一点,并且比编写测试以获取基本信息/文档更容易。

此外,由于我不想在生产环境中运行集成测试,Spring RestDocs方法是在测试环境中运行集成测试,然后将生成的文档/片段复制到战争中以便可以查看在Prod环境中?

2 个答案:

答案 0 :(得分:3)

  

我正在查看Spring REST Docs并想知道它是否能够查询@RestController方法以生成描述Rest API的基本文档

Spring REST Docs是测试驱动的,故意不采用内省@RestController方法的方法。您的REST API文档描述了HTTP请求和响应。通过测试驱动并使用真实或模拟的HTTP请求和响应,REST Docs可确保您记录的内容是您的API用户将要处理的内容。

内省@RestController方法的问题在于它只是这个难题中的一小部分。当收到HTTP请求时,它会在到达您的控制器之前通过过滤器,拦截器,HTTP消息转换等。在发送响应时反向也是如此。如果没有完全理解控制器被调用之前发生的所有事情以及控制器返回后发生的所有事情,那么文档就有可能导致不准确。

  

是Spring RestDocs方法,用于在测试环境中运行集成测试,然后将生成的文档/片段复制到战争中,以便可以在Prod环境中查看

正确。文档在构建时生成一次,然后通常作为应用程序中的静态文件提供。有关如何使用Spring Boot执行此操作的详细信息,请included in the documentation

这种方法的优点是,创建文档所涉及的代码都没有在生产中运行。这减少了应用程序的占用空间,并避免了生成文档的代码导致生产中出现问题的可能性。我相信你可以采用类似的方法使用代码优先的Swagger工具,但根据我的经验,人们这样做是不寻常的。

答案 1 :(得分:0)

Swagger是我的最佳选择。如果没有集成测试,您无法使用Spring Rest Docs制作文档。很好article评论其他工具