Swagger Springfox配置问题
Swagger Springfox Configuration Issue
我有一个应用程序使用 Spring MVC 来处理 REST 调用,控制器是 REST 控制器并用 @RestController
注释,控制器及其方法用 @RequestMapping
注释.
我正在尝试添加 Swagger 以生成现有 REST 服务的文档。我正在尝试将它添加为一个测试以查看它的外观。我添加了 springfox
和 ui
库,向 spring context xml
文件添加了 swagger 配置 classes 和 bean 定义。我可以点击 swagger-ui.html
link,但它根本没有生成任何文档。由于文档稀疏,我不知道自己做错了什么或配置有误,而且谷歌搜索这个问题也没有产生任何有用的信息。
任何人都可以就我可能做错的地方提供一些建议,或者提供一些比我目前找到的更好的文档吗?
我在我的 pom 文件中添加了 springfox-swagger2 和相关的 ui 条目,添加了这个:
到我的 spring 文件,以及这些 classes 的两个新 bean 定义:
@Configuration
@EnableSwagger2
public class ApplicationSwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
@EnableWebMvc
public class SwaggerConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
我已经尝试在我的 spring xml 中的第二个 class 中定义 bean,但这也不起作用。我很难过。我已经按照文档中的说明做了,但没有用。有什么想法吗?
springfox 文档可用here。从您的 post 看来,您可能需要执行以下操作
- 添加与 springfox 捆绑在一起的 swagger ui 的依赖项。你应该 this dependency springfox-swagger-ui OR springfox-swagger-ui-rfc6570 到你的依赖项。
- Configure your swagger-ui resources 以便您的 spring 应用程序可以加载它,如下所示
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/documentation/v2/api-docs", "/v2/api-docs?group=restful-api");
registry.addRedirectViewController("/documentation/swagger-resources/configuration/ui","/swagger-resources/configuration/ui");
registry.addRedirectViewController("/documentation/swagger-resources/configuration/security","/swagger-resources/configuration/security");
registry.addRedirectViewController("/documentation/swagger-resources", "/swagger-resources");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/documentation/swagger-ui.html**")
.addResourceLocations("classpath:/META-INF/resources/swagger-ui.html");
registry
.addResourceHandler("/documentation/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
注意:如果您有 spring 启动应用程序,则不需要。
- 确保您使用的是最新的库版本(在撰写本文时为 2.6.0)
- 验证您是否可以在
http(s)://your-host/context-path/v2/api-docs
看到 swagger 服务描述
我有一个应用程序使用 Spring MVC 来处理 REST 调用,控制器是 REST 控制器并用 @RestController
注释,控制器及其方法用 @RequestMapping
注释.
我正在尝试添加 Swagger 以生成现有 REST 服务的文档。我正在尝试将它添加为一个测试以查看它的外观。我添加了 springfox
和 ui
库,向 spring context xml
文件添加了 swagger 配置 classes 和 bean 定义。我可以点击 swagger-ui.html
link,但它根本没有生成任何文档。由于文档稀疏,我不知道自己做错了什么或配置有误,而且谷歌搜索这个问题也没有产生任何有用的信息。
任何人都可以就我可能做错的地方提供一些建议,或者提供一些比我目前找到的更好的文档吗?
我在我的 pom 文件中添加了 springfox-swagger2 和相关的 ui 条目,添加了这个: 到我的 spring 文件,以及这些 classes 的两个新 bean 定义:
@Configuration
@EnableSwagger2
public class ApplicationSwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
@EnableWebMvc
public class SwaggerConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
我已经尝试在我的 spring xml 中的第二个 class 中定义 bean,但这也不起作用。我很难过。我已经按照文档中的说明做了,但没有用。有什么想法吗?
springfox 文档可用here。从您的 post 看来,您可能需要执行以下操作
- 添加与 springfox 捆绑在一起的 swagger ui 的依赖项。你应该 this dependency springfox-swagger-ui OR springfox-swagger-ui-rfc6570 到你的依赖项。
- Configure your swagger-ui resources 以便您的 spring 应用程序可以加载它,如下所示
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/documentation/v2/api-docs", "/v2/api-docs?group=restful-api");
registry.addRedirectViewController("/documentation/swagger-resources/configuration/ui","/swagger-resources/configuration/ui");
registry.addRedirectViewController("/documentation/swagger-resources/configuration/security","/swagger-resources/configuration/security");
registry.addRedirectViewController("/documentation/swagger-resources", "/swagger-resources");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/documentation/swagger-ui.html**")
.addResourceLocations("classpath:/META-INF/resources/swagger-ui.html");
registry
.addResourceHandler("/documentation/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
注意:如果您有 spring 启动应用程序,则不需要。
- 确保您使用的是最新的库版本(在撰写本文时为 2.6.0)
- 验证您是否可以在
http(s)://your-host/context-path/v2/api-docs
看到 swagger 服务描述