为啥使用 springfox 和 Swagger2 时 v2/api-docs 是默认 URL?

Posted

技术标签:

【中文标题】为啥使用 springfox 和 Swagger2 时 v2/api-docs 是默认 URL?【英文标题】:Why is v2/api-docs the default URL when using springfox and Swagger2?为什么使用 springfox 和 Swagger2 时 v2/api-docs 是默认 URL? 【发布时间】:2017-01-16 23:32:39 【问题描述】:

我刚开始在guide 之后使用 swagger,但我发现了一些非常奇怪的东西,对我来说毫无意义。

据我所知,当您拥有 API 版本号 2 的文档时,应该使用 v2/api-docs。

所以,默认应该只有 api-docs,但出于某种奇怪的原因,我发现默认是 v2/api-docs。

检查我找到的库文档this。

如何在以后无法使用 v2 的情况下覆盖该值? (当我的 API 达到 v2 但我还想展示遗留文档时)。

或者也许我使用 v2 的概念是错误的?有人可以帮我解决这个问题吗?

【问题讨论】:

URL 中的v2 不是指你的API 版本号,它是Swagger 规范的版本号。当前版本的 SpringFox 默认使用 Swagger 2.0,这就是你看到的。 【参考方案1】:

/v2/api-docs URL 是 SpringFox 用于文档的默认值。 v2 不是指 API 的文档版本(可以在 Docket 配置中更改),而是使用的 Swagger 规范的版本。查看 documentation here 以自定义 Swagger 文档 URL。简而言之,您需要修改环境属性以更改您的文档将出现在的 URL:

springfox.documentation.swagger.v2.path=/my/docs

这会将 SpringFox Swagger 文档的默认 URL 从 /v2/api-docs 更改为您指定的任何内容。要实现这一点,请将上述属性添加到新的或现有的属性文件中,然后将其作为属性源添加到您的 Springfox 配置类中:

@PropertySource("classpath:swagger.properties")
@Configuration
public class SwaggerConfig ...

【讨论】:

谢谢!。那么,这只是 swagger 文档的终点吗?不适用于我的 API 文档?那我该如何设置我的 api 文档呢? Swagger 是描述 API 端点的规范。您在/v2/api-docs 看到的是 Swagger 2.0 标准中的 API 文档(与 Swagger 1.0、RAML、RestDocs 等相反)。您可以在他们的网站上找到有关 Swagger 规范的更多信息:http://swagger.io/ 知道我的 API 文档在 v2/api-docs 中的位置吗? (因为那个 URL 已经被占用了)swagger2 会为它生成或给我一个 URL 吗? Swagger 文档位于springfox.documentation.swagger.v2.path 属性的任何值处,默认情况下为/v2/api-docs。请参阅上面的更新答案。 有没有办法改变/swagger-ui.html的路径?

以上是关于为啥使用 springfox 和 Swagger2 时 v2/api-docs 是默认 URL?的主要内容,如果未能解决你的问题,请参考以下文章

SpringFox swagger2 and SpringFox swagger2 UI 接口文档生成与查看

springfox+swagger2生成API文档

SpringBoot中部署Swagger2和Swagger-UI

Swagger2相关配置和使用

swagger2的常用注解,传递参数的注意使用方法

Swagger2 SpringBoot