Документ Spring REST на централизованном портале

Я попытался сделать некоторые poc на springfox swagger с весенней загрузкой. Он генерирует пользовательский интерфейс swagger на том же хосте и порту, что и мое приложение.

http://localhost:8080/swagger-ui.html

Мое приложение состоит из нескольких микросервисов, развернутых в облачной инфраструктуре. Таким образом, я могу получить несколько интерфейсов swagger hub, поскольку

http://microservice1:8080/swagger-ui.html
http://microservice2:8081/swagger-ui.html
http://microservice3:8082/swagger-ui.html

Как я могу разместить все мои приложения Springfox swagger hub на одном хосте. Так что я могу иметь консолидированную веб-страницу, чтобы иметь всю документацию по API в одном месте.

Для документа весеннего отдыха я мог бы создать один HTML-документ, используя asciidoctor для своего микросервиса. Опять же, у меня были разные html-документы для разных микросервисов.

Доступна ли эта функция в документе Spring Rest? или в весеннем облаке, где все мои документы объединены в одно веб-приложение.


person vashishth    schedule 22.11.2017    source источник
comment
Мне непонятно, задаете ли вы вопрос о консолидации веб-интерфейса Swagger в одном месте или что-то о Spring REST Docs. Не могли бы вы уточнить?   -  person Andy Wilkinson    schedule 27.11.2017
comment
@AndyWilkinson Я ищу такую ​​функцию. Где я могу объединить все свои оставшиеся документы из разных микросервисов на одном сервере, я сделал poc на spring-rest, где я могу создать один HTML-документ для всех моих API из одного приложения Springboot. Мое приложение состоит из 6 весенних загрузочных приложений. Пожалуйста, предложите, если это выполнимо, используя документ весеннего отдыха.   -  person vashishth    schedule 28.11.2017
comment
Это действительно вопрос Asciidoctor, а не вопрос Spring REST Docs. После того, как REST Docs создаст фрагменты, вы можете включить эти фрагменты в Asciidoctor, сгенерировать HTML и разместить этот HTML практически любым удобным для вас способом.   -  person Andy Wilkinson    schedule 28.11.2017


Ответы (1)


Создайте концепцию фильтра Zuul. Создайте службу фильтрации Zuul и добавьте зависимость swagger2 в свой pom.xml и создайте класс конфигурации в этой службе, как указано ниже.

@EnableSwagger2
@Configuration
@Component
@Primary
public class SwaggerConfig implements SwaggerResourcesProvider {
    @Override
    public List<SwaggerResource> get() {
        List resources = new ArrayList<>();
        resources.add(swaggerResource("microservice1", "/microservice1/v2/api-docs", "2.0"));
        resources.add(swaggerResource("microservice2", "/microservice2/v2/api-docs", "2.0"));
       resources.add(swaggerResource("microservice3", "/microservice3/v2/api-docs", "2.0"));
        return resources;
    }

    private SwaggerResource swaggerResource(String name, String location, String version) {
        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName(name);
        swaggerResource.setLocation(location);
        swaggerResource.setSwaggerVersion(version);
        return swaggerResource;
    }
}

Добавьте приведенную ниже конфигурацию в три других микросервиса (микросервис1, микросервис2, микросервис3..)

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors.basePackage("com.stackoverflow.login.controller"))
                .paths(PathSelectors.regex("/.*")).build().apiInfo(apiEndPointsInfo());
    }

    private ApiInfo apiEndPointsInfo() {
        return new ApiInfoBuilder().title("Spring Boot REST API").description("Employee Management REST API")
                .contact(new Contact("stackoverflow", "www.stackoverflow.com", ""))
                .license("Apache 2.0").licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html").version("1.0.0")
                .build();
    }
}
person Noyal    schedule 21.06.2019