Как изменить basePath для Springfox Swagger 2.0
Я запускаю службу, где пользовательский интерфейс Swagger доступен по адресу:
http://serviceURL/swagger-ui.html
Однако он находится за прокси-сервером, например:
http://proxyURL/serviceName
Сгенерированные URL-адреса с помощью интерфейса Swagger выглядят следующим образом:
http://proxyURL/
вместо фактического URL с именем службы как суффикс.
Насколько я понимаю, это означает манипулирование свойством basePath. Согласно документации:
Документация API Swagger API больше не может описывать операции по различные базовые пути. В 1.2 и ранее каждый ресурс мог иметь отдельный basePath. В 2.0 эквиваленты basePath (схемы + host + basePath) определены для всей спецификации.
@Api (basePath) устарел, и он не говорит, что использовать и как его использовать. Как правильно создать пути, созданные Swagger?
Я использую Spring Boot, Springfox Swagger и аннотации.
Ответы
Ответ 1
@Bean
public Docket newsApi(ServletContext servletContext) {
return new Docket(DocumentationType.SWAGGER_2).pathProvider(new RelativePathProvider(servletContext) {
@Override
public String getApplicationBasePath() {
return "/serviceName" + super.getApplicationBasePath();
}
}).host("proxyURL");
}