【问题标题】:Spring REST Docs interrogating @RestController?Spring REST Docs 询问@RestController?
【发布时间】:2017-02-23 01:52:41
【问题描述】:
我正在查看 Spring REST Docs 并想知道它是否能够询问 @RestController 方法以生成描述 Rest API(方法、http 方法、参数、响应类型)的基本文档?我相信 Springfox Spring/Swagger 可以做到这一点,并且比必须编写测试来获取基本信息/文档更容易。
另外,由于我不想在生产环境中运行集成测试,Spring RestDocs 方法是在测试环境中运行集成测试,然后将生成的 docs/sn-ps 复制到战争中,这样它就可以在 Prod 环境中查看?
【问题讨论】:
标签:
spring
spring-restdocs
【解决方案2】:
我正在查看 Spring REST Docs 并想知道它是否能够询问 @RestController 方法以生成描述 Rest API 的基本文档
Spring REST Docs 是测试驱动的,故意不采用内省@RestController 方法的方法。您的 REST API 文档正在描述 HTTP 请求和响应。通过测试驱动并处理真实或模拟的 HTTP 请求和响应,REST Docs 可确保您记录的内容就是您的 API 用户将要处理的内容。
内省@RestController 方法的问题在于它只是难题的一小部分。当收到 HTTP 请求时,它会在到达控制器之前通过过滤器、拦截器、HTTP 消息转换等。发送响应时反过来也是如此。如果不完全了解调用控制器之前发生的所有事情以及控制器返回之后发生的所有事情,文档就有不准确的风险。
是 Spring RestDocs 方法,用于在测试环境中运行集成测试,然后将生成的 docs/sn-ps 复制到战争中,以便可以在 Prod 环境中查看
正确。文档在构建时生成一次,然后通常作为应用程序中的静态文件提供。有关如何使用 Spring Boot 执行此操作的详细信息是 included in the documentation。
这种方法的优点是创建文档所涉及的所有代码都不会在生产环境中运行。这减少了应用程序的占用空间,并避免了生成文档的代码在生产中引起问题的可能性。我相信您可以使用代码优先的 Swagger 工具采取类似的方法,但根据我的经验,人们这样做并不常见。