Не найдено сопоставления для / GET / swagger

#java #gradle #swagger #springfox

#java #gradle #swagger #springfox

Вопрос:

Я пытаюсь настроить 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" 
................
  

У меня есть слой с несколькими проектами. Структура :

Имяпроекта

— project1

   --setting.gradle

  --build.gradle
  

— project2

   --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

Комментарии:

1. вы пробовали без ‘project1’ в URL?

2. Можете ли вы добавить также server.servlet.context-path ?

3. server.servlet.context-path=/project1/api

Ответ №1:

Удалите «/api» из server.servlet.context-path .

Каким-то образом swagger противоречит этой части.

Комментарии:

1. Спасибо, теперь он работает localhost:8090/project1/swagger-ui.html