繁体   English   中英

Swagger上的API细分

[英]APIs segmentation on Swagger

我对微服务架构应用程式大吃一惊。 该应用程序是使用JHipster生成的。 由于我的后端应用程序有很多端点,因此无法将这些端点加载到大张旗鼓(整个网关应用程序都卡住了)。 因此,我的想法是在Swagger(过滤器)上建立某种端点组。 目前,网关应用程序上的下拉列表中的API项打开了带有两个项的Swagger UI,默认项(/ v2 / api-docs)和服务(/ service / v2 / api-docs)项。 单击第二项,通过加载所有端点获取完整的网关应用程序。 因此,我尝试制作多个下拉项而不是一项(服务(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仍在下拉列表中显示了最初的两项。 我需要的是让多个项目具有相似的端点组。

我已经浪费了很多时间,在询问之前做了很好的研究,所以请帮助我...

您可以在@Api下定义标签以对其进行分组。 但它不会为您提供不同的swagger json文件。 为了获得每个隔离的json,下面是一个示例

在这个例子中,我通过扫描@RestController并根据Controller类将它们分组来动态创建SpringFox Docket Bean。 您可以通过定义自定义注释并扫描它们来制定自己的分组策略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM