gpt4 book ai didi

java - Swagger 上的 API 分割

转载 作者:太空宇宙 更新时间:2023-11-04 11:13:42 26 4
gpt4 key购买 nike

我有一个关于微服务架构应用程序 swagger 的问题。该应用程序是使用 JHipster 生成的。由于我的后端应用程序有很多端点,因此将这些端点加载到 swagger 中是不可能的(整个网关应用程序被卡住)。所以,我的想法是在 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,here is an example

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

关于java - Swagger 上的 API 分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45721143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com