Структура моего каталога проекта выглядит следующим образом:
└── activity
├── app
│ └── ActivityApplication.kt
├── controller
│ └── WelcomeMessageController.kt
├── exception
│ ├── ActivityErrorResponse.kt
│ ├── handler
│ │ └── ActivityServiceExceptionHandler.kt
│ └── response
│ └── ResponseCode.kt
├── model
│ └── WelcomeMessage.kt
├── repository
│ └── WelcomeMessageRepository.kt
├── service
│ └── WelcomeService.kt
└── swagger
└── SwaggerConfig.kt
Когда я перемещаю файл ActivityApplication.kt
в пакет root, то есть прямо под activity
страница сваггера начинает работать нормально. Однако, когда я перемещаю его в пакет (в данном случае app
), на странице сваггера ничего не отображается, кроме следующей ошибки
Ошибка: Невозможно определить базовый URL. Это часто происходит при использовании регистрации сервлета Dynami c или когда API находится за шлюзом API. Базовый URL-адрес - это root, в котором хранятся все ресурсы чванства. Например, если API доступен в http://example.org/api/v2/api-docs, тогда базовый URL будет http://example.org/api/. Пожалуйста, введите местоположение вручную:
моя конфигурация сваггера выглядит следующим образом
@Configuration
@EnableSwagger2
class SwaggerConfig {
@Bean
fun api(): Docket {
return Docket(DocumentationType.SWAGGER_2)
.pathProvider(object: RelativePathProvider(null) {
override fun getApplicationBasePath(): String {
return "/activity"
}
})
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.activity.controller"))
.build()
.apiInfo(buildApiInfo())
}
private fun buildApiInfo(): ApiInfo? {
return ApiInfo(
...)
}
}
ActivityApplication.kt
имеет только следующий код
@SpringBootApplication
class ActivityApplication
fun main(args: Array<String>) {
runApplication<ActivityApplication>(*args)
}
- Java Версия : OpenJDK 11
- Версия Springfox-swagger2 : 2.9.2