Spring Boot 在swagger中为请求添加上下文路径

nafvub8i  于 2023-04-20  发布在  Spring
关注(0)|答案(2)|浏览(400)

我有一个Eureka 服务,它有一个swagger。eureka在http://localhost:8050上,服务通过name /service进行。问题是当我打开swagger并尝试发出请求时,它会将其发送到http://localhost:8050/service/somecontroller。服务有一个上下文路径“path”,所以它应该是http://localhost:8050/service/path/somecontroller。这是swagger的配置:

@Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2).select()
            .apis(RequestHandlerSelectors.basePackage("com.test")).paths(PathSelectors.any())
            .build();
    }
to94eoyn

to94eoyn1#

Springfox有一个开放的问题(#2817),你可以尝试一些用户提出的解决方法。

fkaflof6

fkaflof62#

设法像这样更改swagger的上下文路径:

@Value("${contextPath}")
private String contextPath;

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
        //.host(retrieveHostHostname())
        .pathProvider(new PathProvider() {
        @Override
        public String getApplicationBasePath() {
            return contextPath;
        }

        @Override
        public String getOperationPath(String s) {
            return s.replace("somecontroller", contextPath+"/somecontroller");
        }

        @Override
        public String getResourceListingPath(String s, String s1) {
            return "/";
        }
    }).select()
        .apis(RequestHandlerSelectors.basePackage("com.test")).paths(PathSelectors.any())
        .build();
}

相关问题