gpt4 book ai didi

java - Swagger 2 & spring MVC - 忽略 war 上下文路径

转载 作者:行者123 更新时间:2023-11-30 08:34:03 25 4
gpt4 key购买 nike

我正在使用带有 spring mvc 的 swagger 2。

war 文件是 web-app.war,Swagger 基本 URL 显示为 /web-app/rest/api

我想删除 war 上下文路径,这样 api 调用就可以作为

example.com/rest/api不是 example.com/web-app/rest/api

SwaggerConfig.java

@Configuration
@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurerAdapter {

@Bean
public Docket api() {
// @formatter:off
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.any())
.build().apiInfo(apiInfo());
}


private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("Rest API")
.description("Describes the restful interface")
.build();
}

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}

最佳答案

如果 /web-app 是您的上下文根(您可以在您的 IDE 中更改它,网上有大量教程介绍如何进行更改)——那么您无法放置一个元素你的项目在那之外。

要实现您想要的效果,您可以将上下文根设置为 /,然后在您的 REST 服务前加上 web-app。这将保留相同的 REST 路径,但将 Swagger API 置于 /rest/api

编辑

如果您认为 Springfox 错误地确定了您的基本路径,您可以将 PathProvider 添加到 Docket 定义中:

return new Docket(DocumentationType.SWAGGER_2)
/*other options*/
.pathProvider(new PathProvider(){

String getApplicationBasePath(){
return "/";
}
/*implement other methods or extend RelativePathProvider or Absolute PathProvider instead */
}

关于java - Swagger 2 & spring MVC - 忽略 war 上下文路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39094927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com