【问题标题】:No mapping found for / GET / swagger未找到 / GET / swagger 的映射
【发布时间】:2020-11-18 13:20:49
【问题描述】:

我正在尝试为一个项目配置 swagger,但我收到了无数次错误:

o.s.web.servlet.PageNotFound             : No mapping for GET /project1/api/null/swagger-resources/configuration/ui" 
o.s.web.servlet.PageNotFound             : No mapping for GET /project1/api/null/swagger-resources/configuration/ui" 
o.s.web.servlet.PageNotFound             : No mapping for GET /project1/api/null/swagger-resources/configuration/ui" 
o.s.web.servlet.PageNotFound             : No mapping for GET /project1/api/null/swagger-resources/configuration/ui" 
................

我有一个多项目层。结构是:

项目名称

-- 项目1

  --setting.gradle

  --build.gradle

-- 项目2

  --setting.gradle

  --build.gradle

--setting.gradle

在每个 build.gradle 我都有这个依赖项:

compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'

SwaggerConfiguration 类是:

@EnableSwagger2
@Configuration
public class SwaggerConfiguration {

    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                .pathMapping("/");
    }
}

而且我还有一个 WebConfigure 类:

@Configuration
@EnableWebMvc
@Slf4j
public class WebConfigure extends WebMvcConfigurationSupport {
    @Bean
    public AuthorizationInterceptor requestInterceptor() {
        return new AuthorizationInterceptor();
    }

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        log.info("Adding interceptor [{}]", AuthorizationInterceptor.class.getName());
        registry.addInterceptor(requestInterceptor());
    }

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

如果我尝试访问 http://localhost:8090/project1/api/swagger-ui.html 我会收到此错误:

Swagger error

【问题讨论】:

  • 你试过没有 'project1' 在 url 中吗?
  • 你可以添加 server.servlet.context-path 吗?
  • server.servlet.context-path=/project1/api

标签: java gradle swagger springfox


【解决方案1】:

从 server.servlet.context-path 中删除“/api”。

不知何故,招摇与那部分冲突。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 2020-07-12
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
相关资源
最近更新 更多