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

标签 java spring-mvc swagger

我正在使用带有 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/

相关文章:

swagger - 如何为 Swagger 中的键未知的键/值建模

spring - 在 Spring MVC 中动态填充下拉列表

asp.net-core - 是否可以为 Swagger UI 动态添加 Swagger 端点?

java - 如何使用 JXL api 将对象插入单元格

java - Jersey 客户端将数据发送到 String

java - 创建菜单资源会抛出 IllegalStateException

java - 如何在 Guice 4.0 中注入(inject)实现

java - 使用 Jackson 使用 @RequestBody 进行 ajax 发布时出现 400 错误请求

具有多个 View 解析器的 Spring MVC

java - 获取 Swagger 消息中的 HttpStatus ReasonPhrase 文本