Springfox swagger "попробуй", попав на localhost - PullRequest
2 голосов
/ 27 марта 2020

Я использую Spring Boot 2.2.4 для создания API REST и Springfow 2.9 для API c.

Я развернул приложение в docker контейнере, и я могу получить доступ swagger-ui.htmlpage. Однако при использовании функции «связать его» запрос выполняется по локальному URL-адресу (https://locahost/api/find) вместо служебного URL-адреса (https://service.acces.url/api/find). Как я могу это исправить?

конфигурация swagger:

    @Bean
public Docket api(){
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage("fr.test")) // only select API in this package
            .paths(PathSelectors.any())
            .build()
            .apiInfo(apiInfo())
            ;
}

// build some user friendly name and description for the API doc UI
private ApiInfo apiInfo(){
    return new ApiInfoBuilder()
            .title("test")
            .description("test.")
            .license("Apache 2.0")
            .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0")
            .build()
            ;
}

EDIT
Я вижу, что ссылка на / v2 / api-docs si хорошо настроен, но не смог найти, как они сделали в исходном коде ...

enter image description here

1 Ответ

0 голосов
/ 27 марта 2020

По умолчанию, когда вы используете функцию " Try it " в Swagger UI, он делает HTTP-вызов на localhost. Если вы хотите изменить это поведение, вам нужно установить свойство host для Docket с требуемым hostname , как показано ниже:

@Bean
public Docket api(){
    return new Docket(DocumentationType.SWAGGER_2)
            .host("hostname")
            .select()
            .apis(RequestHandlerSelectors.basePackage("fr.test")) // only select API in this package
            .paths(PathSelectors.any())
            .build()
            .apiInfo(apiInfo())
            ;
}

// build some user friendly name and description for the API doc UI
private ApiInfo apiInfo(){
    return new ApiInfoBuilder()
            .title("test")
            .description("test.")
            .license("Apache 2.0")
            .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0")
            .build()
            ;
}

Это будет идеально, чтобы получить это значение hostname из конфигурации, чтобы вы могли изменить его при необходимости, не меняя код. И когда вы установите его как service.acces.url, как вам требуется, HTTP-вызов на интерфейсе Swagger будет сделан на https://service.acces.url/api/find.

...