如何更改 Swagger-ui URL 前缀?

Rav*_*pta 6 java swagger swagger-ui spring-boot swagger-2.0

我在 Spring boot 1.5.9 中使用 Springfox Swagger2。

我可以在此链接上访问 swagger UI。

http://localhost:8090/swagger-ui.html

如何将其更改为在以下 URL 上可用?

http://localhost:8090/my/custom/path/swagger-ui.html

@EnableSwagger2
public class Configuration {

@Bean
public Docket api() { 
    return new Docket(DocumentationType.SWAGGER_2)  
      .select()
      .apis(RequestHandlerSelectors.basePackage("my.favorite.package"))
      .paths(PathSelectors.any())
      .build()
      .apiInfo(apiInfo()).useDefaultResponseMessages(false);
}

private ApiInfo apiInfo() {
    return new ApiInfoBuilder().title("My title").version("1.0")
            .contact(new Contact("Blah", "blah.com", "blah@blah.com")).build();
}
}
Run Code Online (Sandbox Code Playgroud)

Rom*_*sov 9

UPD:Springfox 已被放弃

Springfox Swagger 一直是一个有点肮脏的解决方案,存在很多不清楚和错误,但到目前为止(2021 年第四季度)它已经一年多没有更新了。

最后一根稻草是Springfox Swagger 3.0 不再与 Spring Boot 2.6.x 一起使用。

因此,如果您阅读本文,请考虑切换到https://springdoc.org/

这是一个非常简单的转换,他们在记录方面做得很好。https://springdoc.org/#migration-from-springfox

原答案

我在这里找到了 Springfox 3.0.0 的工作解决方案:

springfox:
  documentation:
    swaggerUi:
      baseUrl: /documentation
    openApi:
      v3:
        path: /documentation/v3/api-docs
    swagger:
      v2:
        path: /documentation/v2/api-docs
Run Code Online (Sandbox Code Playgroud)

上面的配置会将 Swagger 端点的基本路径更改为/documentation没有任何重定向和其他拐杖。

遗憾的是文档中缺少这些配置。


Hat*_*ice 6

试试这个配置类。

@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {

  @Bean
  public Docket productApi() {
    return new Docket(DocumentationType.SWAGGER_2)
        .select().apis(RequestHandlerSelectors.basePackage(""my.favorite.package""))
                        .paths(regex(PathSelectors.any()))
        .build();

  }

  @Override
  public void addViewControllers(ViewControllerRegistry registry) {
    registry.addRedirectViewController("/documentation/v2/api-docs", "/v2/api-docs").setKeepQueryParams(true);
    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/**").addResourceLocations("classpath:/META-INF/resources/");
  }


}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢...这对我有用,但是我也需要添加以下内容: `registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/")` 和 `registry.addResourceLocations("classpath:/META-INF/resources/")` 。 addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/")` (3认同)