/ / Agregácia systému Swagger Gateway MicroService - java, jarná topánka, swagger, microervices

Swagger Gateway MicroService agregácie - java, jar-boot, chvástání, microservices

Vyvíjam mikroservisnú aplikáciu pomocouSpringBoot. Existuje verejná služba Gateway Microservice, ktorá presmeruje požiadavky na konkrétnu mikroservis (ktorý beží na rôznych hostiteľoch).

Teraz, keď mám viac mikroprocesov, každá mikroservis odhalila svoje API pomocou nástroja Swagger. Všetky verejné dokumenty API Swagger by sme chceli agregovať.

Dočasné riešenie, ktoré sme začlenili, je skopírovanie tried Swagger Annotated pre každú mikroservis v službe Gateway Service. správna cesta urobiť to?

odpovede:

2 pre odpoveď č. 1

Použil som Zuul a to vyriešilo môj problém Takto by sa nasadila moja aplikácia nasadenie aplikácie

Toto som pridal do svojho 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 hlavná trieda vyzerá takto

 @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);
}
}

Vytvoril som agregátor pre swagger dokument

@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;
}
}

V tejto oblasti môžem pridať ďalšie mikroservisy. (Môže byť vylepšený tak, aby bol čítaný z konfiguračného súboru)

môj application.properties vyzerá takto

...
server.port=8001

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