1

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

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

4

2 回答 2

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 执行此操作的详细信息。

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

于 2016-10-14T11:01:42.023 回答
0

Swagger是我的最佳选择。如果没有集成测试,你不能用 Spring Rest Docs 制作文档。这是好文章评论休息工具

于 2016-10-14T06:30:10.890 回答