【问题标题】:Change location to call swagger-ui in Spring在 Spring 中更改位置以调用 swagger-ui
【发布时间】:2018-02-21 03:38:40
【问题描述】:

如何更改位置以调用 swagger api 文档从 http://localhost:8081/swagger-ui.htmlhttp://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-swagger2springfox-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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-20
      • 2019-02-18
      • 2017-01-27
      • 1970-01-01
      • 2022-12-15
      • 2016-07-18
      • 2016-03-01
      • 2017-02-13
      相关资源
      最近更新 更多