【问题标题】:Change location to call swagger-ui in Spring在 Spring 中更改位置以调用 swagger-ui
【发布时间】:2018-02-21 03:38:40
【问题描述】:
如何更改位置以调用 swagger api 文档从 http://localhost:8081/swagger-ui.html 到 http://localhost:8081/my-api-doc?
我的 SwaggerConfig 是
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.package"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
我将springfox-swagger2 和springfox-swagger-ui 都与version 2.7.0 一起使用。
【问题讨论】:
标签:
spring
swagger
springfox
【解决方案1】:
这是我能做到的。
@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");
registry.addRedirectViewController("/documentation", "/documentation/swagger-ui.html");
}
@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/");
}
这个方法被添加到一个像这样扩展WebMvcConfigurerAdapter 的配置类中
public class Configuration extends WebMvcConfigurerAdapter {...}
您不能删除 swagger-ui.html 或更改,因为它是硬编码在源代码中的。
【解决方案2】:
如果使用 Spring Boot,您可以添加一个映射来重定向请求,例如:
@GetMapping("/swagger")
public void swaggerRedirect(HttpServletResponse response) {
response.setHeader("Location", "/swagger-ui.html");
response.setStatus(302);
}