/ / Swagger Gateway MicroService Aggregation - java, spring-boot, swagger, mikroserwisy

Swagger Gateway MicroService Aggregation - java, wiosenny boot, swagger, microservices

Zajmuję się tworzeniem aplikacji mikroserwisowej za pomocąSpringBoot. Istnieje Gateway Microservice, która jest publicznie dostępna, przekierowuje żądania do określonej mikroserwisowej (działającej na różnych hostach).

Teraz mam wiele mikroserwisów, każda mikroserwiska ujawniła swoje API za pomocą Swagger. Chcielibyśmy agregować wszystkie te dokumenty API Swagger dla klientów publicznych.

Tymczasowe rozwiązanie, które wprowadziliśmy, po prostu skopiowało klasy Swagger Annotated dla każdej mikroserwisowej usługi Gateway. właściwy sposób to zrobić?

Odpowiedzi:

2 dla odpowiedzi № 1

Użyłem Zuula i to rozwiązało mój problem W ten sposób zostanie wdrożona moja aplikacja wdrożenie aplikacji

Dodałem to w moim pom.xml

<dependencies>
....
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
</dependencies>

Moja główna klasa wygląda tak

 @EnableZuulProxy
@SpringBootApplication
@EnableSwagger2
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

@Bean
UiConfiguration uiConfig() {
return new UiConfiguration("validatorUrl", "list", "alpha", "schema",
UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS, false, true, 60000L);
}
}

Stworzyłem agregator dla dokumentu swagger

@Component
@Primary
@EnableAutoConfiguration
public class SwaggerAggregatorController implements SwaggerResourcesProvider {
@Override
public List<SwaggerResource> get() {
List<SwaggerResource> resources= new ArrayList<>();
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName("cust-service");
swaggerResource.setLocation("/cust/v2/api-docs");
swaggerResource.setSwaggerVersion("2.0");

resources.add(swaggerResource);
return resources;
}
}

Mogę dodać więcej mikroserwisów w tej dziedzinie. (Można go poprawić, aby można było go odczytać z pliku konfiguracyjnego)

Mój application.properties wygląda jak poniżej

...
server.port=8001

zuul.routes.cust.path=/cust/**
zuul.routes.cust.url=http://1.1.1.2:8002/cust-service/
...