我对微服务架构app swagger有疑问。该应用程序由JHipster生成。由于我的后端应用程序有很多端点,因此将这些端点加载到swagger是不可能的(整个网关应用程序都会卡住)。所以,我的想法是在Swagger(过滤器)上创建某种端点组。 目前,来自网关应用程序下拉列表的API项目打开Swagger UI,其中包含两个项目,默认(/ v2 / api-docs)和服务(/ service / v2 / api-docs)项目。点击第二项,通过加载所有端点获取完整的网关应用程序卡住。所以,我尝试制作多个下拉项而不是一个项(service(service / v2 / api-docs))。我遵循了本教程:https://piotrminkowski.wordpress.com/2017/04/14/microservices-api-documentation-with-swagger2/ 所以,在我的网关应用程序中,我有 GatewaySwaggerResourceProvider:
@Override
public List<SwaggerResource> get() {
List<SwaggerResource> resources = new ArrayList<>();
//Add the default swagger resource that correspond to the gateway's own swagger doc
resources.add(swaggerResource("default", "/v2/api-docs"));
//Add the registered microservices swagger docs as additional swagger resources
List<Route> routes = routeLocator.getRoutes();
routes.forEach(route -> {
resources.add(swaggerResource(route.getId(), route.getFullPath().replace("**", "v2/api-docs")));
});
return resources;
}
在我的网关的主要课程中,我提出了:
@Bean
UiConfiguration uiConfig() {
return new UiConfiguration("validatorUrl", "list", "alpha", "schema",
UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS, false, true, 60000L);
}
在我的微服务应用程序(后端应用程序)主类中,我已经放置Docket @Bean,它只过滤特定包中的端点:
@Bean
public Docket api() throws IOException {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("product")
.select()
.apis(RequestHandlerSelectors.basePackage("kango.web.rest"))
.paths(PathSelectors.ant("/product-types/*"))
.build()
.apiInfo(apiInfo());
}
在此之后,我重新启动了两个应用程序,Swagger仍在下拉列表中显示最初的两个项目。我需要的是拥有多个具有相似端点组的项目。
我已经失去了很多时间,并在询问之前做了很好的研究,所以请帮助我......
答案 0 :(得分:0)
您可以在@Api下定义标签以对其进行分组。但它不会为您提供不同的swagger json文件。为了得到每个隔离的json,here is an example
在此示例中,我通过扫描@RestController动态创建SpringFox Docket Bean 并按控制器类将它们分组。您可以通过定义自定义注释并扫描它们来制定自己的分组策略。