SpringCloudGateway集成SpringDoc

这篇具有很好参考价值的文章主要介绍了SpringCloudGateway集成SpringDoc。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringCloudGateway集成SpringDoc

最近在搞Spring版本升级,按客户要求升级Spring版本,原来用着SpringBoot 2.2.X版本,只需要升级SpringBoot 2.X最新版本也就可以满足客户Spring版本安全要求,可是好像最新的SpringBoot 2.X貌似也不支持Swagger2了,综合考虑,把项目的环境升级到SpringBoot3

版本

  • SpringBoot 3.1.2
  • SpringCloud 2022.0.3 (SpringCloudGateway 4.0.6)
  • SpringDoc-OpenAPI 2.2.0

引入SpringDoc-OpenAPI依赖

<dependency>
	<groupId>org.springdoc</groupId>
	<artifactId>springdoc-openapi-starter-webflux-api</artifactId>
	<version>2.2.0</version>
</dependency>
<dependency>
	<groupId>org.springdoc</groupId>
	<artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
	<version>2.2.0</version>
</dependency>

自动配置

思路

跟以前Swagger2集成Gateway差不多,读取Gateway的路由配置信息,刷新到SpringDoc-Swagger-UI属性去

实现

@Configuration
@ConditionalOnProperty(name = SPRINGDOC_ENABLED, matchIfMissing = true)
public class DocIntegrationConfig {
    @Autowired
    private SwaggerUiConfigProperties swaggerUiConfigProperties;
    @Autowired
    private RouteDefinitionLocator locator;


    @PostConstruct
    public void apis() {
        //获取所有的路径配置
        List<RouteDefinition> definitions = locator.getRouteDefinitions().collectList().block();
        //过滤,只要lb模块式
        List<RouteDefinition> serviceRoutes = definitions.stream().filter(route -> null != route.getUri() && route.getUri().getScheme().equals("lb")).collect(Collectors.toList());
        //按根据PredicateDefinition参数值和/** 确定是否路径匹配
        Set<AbstractSwaggerUiConfigProperties.SwaggerUrl> lbRouteUrl = new HashSet<>();
        Optional.ofNullable(serviceRoutes).orElse(Collections.emptyList()).forEach(route -> {
            AbstractSwaggerUiConfigProperties.SwaggerUrl swaggerUrl = new AbstractSwaggerUiConfigProperties.SwaggerUrl();
            //获取路径前缀
            List<PredicateDefinition> predicates = route.getPredicates();
            if (null == predicates || predicates.size() <= 0) {
                return;
            }
            String prefix = "";
            for (PredicateDefinition predicate : predicates) {
                String predicateName = predicate.getName();
                if ("path".equalsIgnoreCase(predicateName)) {
                    for (String regex : predicate.getArgs().values()) {
                        if (regex.endsWith("/**")) {
                            prefix = regex.substring(0, regex.length() - 3);
                            continue;
                        }
                    }

                }
            }
            //不是路径匹配的路由,跳过
            if (StringUtils.isBlank(prefix)) {
                return;
            }

            swaggerUrl.setUrl(prefix + Constants.DEFAULT_API_DOCS_URL);
            swaggerUrl.setName(prefix);
            swaggerUrl.setDisplayName(route.getId());
            lbRouteUrl.add(swaggerUrl);
        });

        //添加swaggerUI服务集成匹配
        if (lbRouteUrl.size() > 0) {
            Set<AbstractSwaggerUiConfigProperties.SwaggerUrl> propertiesUrls = swaggerUiConfigProperties.getUrls();
            if (null == propertiesUrls || propertiesUrls.size() <= 0) {
                propertiesUrls = lbRouteUrl;
            } else {
                propertiesUrls.addAll(lbRouteUrl);
            }
            swaggerUiConfigProperties.setUrls(propertiesUrls);
        }


    }
}

然后就可以根据gateway的路由配置,自动在gateway springdoc界面生成各服务项,选择就可以查看该服务的在线文档。

借助swagger-ui.urls手动配置

springdoc,也提供配置的形式集成,配置swagger-ui.urls,就可以了,name为显示名称,url为服务api-docs,默认 /v3/api-docs。

springdoc:
  api-docs:
    #是否开启文档功能,默认为true,可不配置
    enabled: true
  webjars:
    # 设置为空,不要前缀
    prefix:
  swagger-ui:
    path: /doc.html
    urls:
      - name: 网关服务接口
        url: /v3/api-docs
      - name: 某某服务接口
        url: /xxxx/v3/api-docs

在集成页面的右上角可看到配置的服务项,选择具体的服务
SpringCloudGateway集成SpringDoc,Spring Cloud,Spring Boot,SpringBoot3,gateway,SpringDoc

集成后CORS问题,请求查看下一篇文章文章来源地址https://www.toymoban.com/news/detail-693428.html

到了这里,关于SpringCloudGateway集成SpringDoc的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot 3.x- RESTful API集成SpringDoc&Swagger-UI

    系列文章:Spring Boot 3.x 系列教程 springdoc-openapi 帮助使用Spring Boot项目自动化API文档的生成。 springdoc-openapi 的工作原理是在运行时检查应用程序,根据Spring配置、类结构和各种注释推断 API 语义。 自动生成 JSON/YAML 和 HTML 格式的 API 文档。这个文档可以通过使用 swagger-api 注解来

    2024年01月25日
    浏览(48)
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成

    问题 @Tag和@Operation标签失效 但是@Schema标签有效 pom依赖 debug排查,发现时国际化问题 解决方法:application.yml配置禁用i18n翻译

    2024年02月05日
    浏览(55)
  • Springdoc Swagger UI集成OAuth2认证

    之前的文章讲过OAuth2体系,以 授权码 流程为例(参见下图), 其中资源服务器(Resource Server)作为服务的提供者, 用户在客户端应用完成授权流程后,客户端应用需要 携带AccessToken请求资源服务器 , 也即是要想访问资源服务器就需要提供正确的 Authorization: Bearer AccessToke

    2024年02月02日
    浏览(41)
  • 【超详细】springboot + springdoc-openapi + knife4j 集成案例

    springdoc-openapijava库有助于使用 spring boot 项目自动生成 API 文档。 springdoc-openapi通过在运行时检查应用程序以根据 spring 配置、类结构和各种注释推断 API 语义来工作。 自动生成 JSON/YAML 和 HTML 格式 API 的文档。可以使用 swagger-api 注释通过注释来完成此文档。 该库支持: OpenAP

    2023年04月25日
    浏览(49)
  • Springboot3.0.0+集成SpringDoc并配置knife4j的UI

    环境:JDK17,Springboot3+,springdoc2+,knife4j 4+ Springdoc本身也是集成了Swagger3,而knife4j美化了Swagger3的UI Knife4j官网: 快速开始 | Knife4j Springdoc官网 OpenAPI 3 Library for spring-boot 由于此knife4j内依赖了SpringDoc,因此不用另外引入springdoc的依赖 springdoc依赖(无需引入),亲测引入也不会冲突

    2024年02月09日
    浏览(49)
  • Spring Boot 整合 springdoc-openapi

    springdoc-openapi官网:springdoc.org springdoc-openapi Github仓库:springdoc / springdoc-openapi springdoc-openapi Maven仓库:Home » org.springdoc » springdoc-openapi-ui OpenApi是一个业界的 api 文档标准,一个规范。 好比java里面一个抽象的概念,即是一个抽象类,只是提供了一个api文档规范的抽象方法。

    2024年02月14日
    浏览(44)
  • Spring Doc OpenAPI3.0 抛弃SpringFox拥抱SpringDoc

    SpringDoc是SpringBoot 的API文档工具。官网:https://springdoc.org/ 在使用SpringBoot 2.6以前去创建API文档工具一般会采用 SpringFox 提供的Swagger库,但是由于SpringBoot版本的不断升级和SpringFox摆烂不更新,导致了SpringBoot2.6之后的项目无法使用SpringFox去生成API文档,或者可以使用但是有很多

    2024年02月04日
    浏览(39)
  • Springboot 2.7 集成 Swagger 增强版接口框架 Knife4j 4.3 + springdoc OpenApi 3.0

    Swagger 作为一款服务端接口文档自动生成框架,早已深入人心,并且在市场上得到了广泛的应用。然而,Swagger 3.0 也就是 OpenApi 3.0 规范发布之后便停止了更新维护,出道就是巅峰。Knife4j 作为 Swagger 的增强版,是对 Swagger UI 做了优化,同时还有很多增强的功能。伴随着 Swagge

    2024年02月08日
    浏览(46)
  • Spring Boot3.x 使用SpringDoc生成接口文档-超级完善 + knife4jUI

    在Springfox3.0停更的两年里,SpringBoot进入3.0时代, SpringFox出现越来越多的问题,最为明显的就是解析器的问题,已经在上文 中解释清楚,这里就不再赘述。 SpringDoc是Spring官方推荐的API,相信不会轻易停更。 SpringDoc有多个版本,如果你使用的是SpringBoot3.x,请确保SpringDoc的版本

    2024年02月04日
    浏览(49)
  • Spring Boot 3.x 引入springdoc-openapi (内置Swagger UI、webmvc-api)

    接触的原因 因开发自己的项目时,写接口文档很繁琐,查到后端都在用 swagger 等接口工具来记录接口文档,于是学习了一下,本文记录个人配置过程,有问题欢迎指正交流😁 Swagger: Swagger是一种Rest API的表示方式,它是标准的、语言无关的工具,这种表示方式不仅人可读,

    2024年04月27日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包