#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 Я получаю эту ошибку:
Комментарии:
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