使用application.properties覆盖Swagger路径

时间:2019-04-22 02:08:55

标签: spring spring-boot

我正在使用springfox-swagger 2.8.0。我想根据需要自定义Swagger文档和API版本路径。可以使用application.properties修改版本路径,并且路径正确:

springfox.documentation.swagger.v2.path = / v2 / availability-service

http://localhost:8080/context-path/v2/availability-service

但是希望我的文档URL如下所示,如何使用application.properties条目或任何方法替代来做到这一点。

http://localhost:8080/context-path/availability-service.html

http://localhost:8080/context-path/swagger-ui.html URL正确返回了文档。

任何人都可以指定如何做吗?任何建议都会有所帮助。

3 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

  ### Popular gems integration
  config.authenticate_with do
    redirect_to merchants_path unless current_user.admin?
  end
  config.current_user_method(&:current_user)

答案 1 :(得分:0)

我的Java代码:前提条件是您的网址具有良好的命名和分组规则。

@Configuration
@EnableSwagger2
@ConditionalOnProperty("swagger.enable")
public class Swagger2Config {

@Bean
public Docket createRestApi() {
    return new Docket(DocumentationType.SWAGGER_2).groupName("contract")
            .apiInfo(apiInfo())
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.invoice.gateway.api.admin"))
            .paths(PathSelectors.ant("/api/admin/**"))
            .build();
}

private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
            .title("Web APIs")
            .description("Contract Interface")
            .version("1.0")
            .build();`enter code here`
}
}

答案 2 :(得分:0)

我认为简短的答案是您不能。造成这种情况的至少一个原因是springfox.js代码中的此功能,其中swagger-ui.html是硬编码

const getBaseURL = () => {
    const urlMatches = /(.*)\/swagger-ui.html.*/.exec(window.location.href);
    return urlMatches[1];
};

更长的答案是,您可能可以解决此问题,具体取决于您的要求以及要投入多少工作。

如果您只希望某人从您的特定链接到达 swagger-ui文档,则快速解决方案是将对http://localhost:8080/context-path/availability-service.html的所有请求重定向到http://localhost:8080/context-path/swagger-ui.html

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addRedirectViewController(
                "/context-path/availability-service.html",
                "swagger-ui.html"
        );
    }
}