当前位置: 首页 > 知识库问答 >
问题:

Swagger上的API分割

颜新
2023-03-14

我有一个关于微服务架构应用Swagger的问题。应用程序是用Jhipster生成的。由于我的后端应用程序有很多endpoint,所以将那些endpoint加载到swagger是不可能的(整个网关应用程序会被卡住)。所以,我的想法是在Swagger(过滤器)上做某种endpoint组。目前,gateway app下拉列表中的API item打开了带有两个项的Swagger UI,default(/v2/api-docs)和service(/service/v2/api-docs)项。点击第二个项目得到完整的网关应用程序加载所有endpoint卡住。所以,我尝试制作多个下拉项,而不是一个项(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);
}
@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仍然在下拉列表中显示初始的两个项目。我需要的是有多个项目与相似的endpoint组。

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

共有1个答案

洪富
2023-03-14

您可以在@API下定义标记来对它们进行分组。但它不会给您一个不同的swagger json文件。为了在每个隔离中获得单独的json,下面是一个示例

在本例中,我通过扫描@RestController动态创建SpringFox Docket Bean,并对每个控制器类进行分组。通过定义自定义注释并扫描它们,您可以有自己的分组策略。

 类似资料:
  • 我正在使用Spring摇摆库v1.0.2 马文: 我可以扫描我的REST API并在Swagger UI上查看它。我什至实现了OAuth,它运行良好。 然而,有一个特性我需要实现。我想隐藏一些REST API。我需要在类级别和方法级别执行此操作。我读到@Api注释中有一个“hidden”属性。我将其设置为“true”,但我仍然可以看到我的类及其所有方法显示在Swagger UI中。 例子: 有人可

  • 我想知道以下是否可行。 Swagger几乎是我记录基于消息的API所需要的。例如,对于命令消息,我想说“命令”而不是“发布”,而不是“路径”,我想知道命令的名称。 规范提到可以使用“x”属性进行供应商扩展,但我1)没有找到任何示例来说明如何做到这一点,2)不确定使用这些属性是否有助于我实现目标。 有人能给我指出一些可以帮助我前进的资源吗?

  • MSAM是一个API接口文档管理器,MSAM的属性根据swagger-models-1.5.20.jar进行定义并添加了拓展属性 MSAM以项目-接口分组-接口三个单位,项目最终生成的结果理论上兼容Swagger的Swagger UI 不过MSAM也有一个属于自己的Client-UI,可以方便的查看检索接口文档 一些疑问 问:为什么有Swagger了还要这个东西? 答:因为大多前后端分离的公司基本

  • 我正在使用Java 8构建一个使用SpringBoot和SpringREST服务的API。我刚刚发现了Swagger API,现在我想让我的API与Swagger兼容。 据我所知,Swagger是一个记录您的APIS的工具,而且还提供了从规范(swagger.jsonv2中)生成客户端和服务器代码的功能,以及与您的API交互的漂亮Web界面。 现在,我想要一些关于如何继续的建议,因为我已经有了一个

  • swagger规范存储库提供了描述有效Swagger 2.0 API定义的JSON模式。我想使用此模式来验证给定API定义文件是否有效,然后再尝试解释它。我使用以下代码使用Json.NET加载模式: 这将抛出一个 ArgumentException,报告“无法将数组转换为布尔值”。 模式文件有问题吗?这是Json的错误吗。NET,还是我只是做错了什么?

  • 我正在尝试设置一个AWS API网关,该网关需要在任何请求的标头中使用API密钥。我设置了swagger来生成json定义,AWS很好地导入了它。但是,当我尝试添加API密钥安全定义时,Amazon拒绝了我的swagger API文档,错误如下: 我想我做错了。。。因此,我尝试了这方面的几种变化。 给定使用springfox创建的Spring Boot配置: 上述api定义如下: 当我运行我的应用