我有一个使用 Spring MVC 处理 REST 调用的应用程序,控制器是 REST 控制器并注释为@RestController
,控制器及其方法注释为@RequestMapping
.
我正在尝试添加 Swagger 来生成现有 REST 服务的文档。我正在尝试将其添加为一个测试,看看它是什么样子。我已经添加了springfox
and ui
库,添加了 swagger 配置类和 bean 定义spring context xml
文件。我可以打swagger-ui.html
链接,但它根本不生成任何文档。由于文档稀疏,我不知道我做错了什么或配置错误,并且谷歌搜索该问题不会产生任何有用的信息。
任何人都可以提供一些关于我可能做错了什么的建议,或者提供一些比我迄今为止找到的更好的文档吗?
我将 springfox-swagger2 和关联的 ui 条目添加到我的 pom 文件中,添加了以下内容:
到我的 spring 文件,以及这些类的两个新 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 的第二个类中定义 bean,但这也不起作用。我很困惑。我已经按照文档所说的做了,但它不起作用。有任何想法吗?
springfox 文档可用here http://springfox.github.io/springfox/docs/current/。从您的帖子看来您可能需要执行以下操作
- 添加与 springfox 捆绑在一起的 swagger ui 的依赖项。你应该这个依赖 springfox-swagger-ui https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui/2.6.0 OR springfox-swagger-ui-rfc6570 https://mvnrepository.com/artifact/io.springfox.ui/springfox-swagger-ui-rfc6570/0.9.8到你的依赖。
-
配置您的 swagger-ui 资源 http://springfox.github.io/springfox/docs/current/#q13以便您的 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 Boot 应用程序,则不需要此操作。
- 确保您使用的是最新的库版本(在撰写本文时为 2.6.0)
- 验证您是否可以在以下位置看到 swagger 服务描述:
http(s)://your-host/context-path/v2/api-docs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)