返回顶部
首页 > 资讯 > 精选 >Gateway+Swagger2配置聚合文档的方法是什么
  • 471
分享到

Gateway+Swagger2配置聚合文档的方法是什么

2023-07-05 19:07:11 471人浏览 独家记忆
摘要

这篇文章主要介绍“Gateway+swagger2配置聚合文档的方法是什么”,在日常操作中,相信很多人在Gateway+Swagger2配置聚合文档的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”G

这篇文章主要介绍“Gateway+swagger2配置聚合文档的方法是什么”,在日常操作中,相信很多人在Gateway+Swagger2配置聚合文档的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Gateway+Swagger2配置聚合文档的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

spring cloud Gateway网关模块聚合各微服务的Swagger接口文档

效果如下图

Gateway+Swagger2配置聚合文档的方法是什么

相关pom依赖

        <!-- 网关路由代理 (仅网关)-->        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-gateway</artifactId>            <version>2.2.5.RELEASE</version>        </dependency>        <!--swagger2 (网关和服务端)-->        <dependency>            <groupId>com.spring4all</groupId>            <artifactId>swagger-spring-boot-starter</artifactId>            <version>1.7.0.RELEASE</version>        </dependency>

Gateway配置

因为Swagger暂不支持WEBflux项目,所以Gateway里不能配置SwaggerConfig

import org.springframework.cloud.gateway.config.GatewayProperties;import org.springframework.cloud.gateway.route.RouteLocator;import org.springframework.cloud.gateway.support.NameUtils;import org.springframework.context.annotation.Primary;import org.springframework.stereotype.Component;import springfox.documentation.swagger.web.SwaggerResource;import springfox.documentation.swagger.web.SwaggerResourcesProvider;import java.util.ArrayList;import java.util.List;@Component@Primarypublic class Swagger2 implements SwaggerResourcesProvider {    protected static final String api_URI = "/v2/api-docs";//固定后缀    private final RouteLocator routeLocator;    private final GatewayProperties gatewayProperties;    //资源集合    private static List<SwaggerResource> resources;//自定义资源名称需要在这里初始化    public Swagger2(RouteLocator routeLocator, GatewayProperties gatewayProperties) {        this.routeLocator = routeLocator;        this.gatewayProperties = gatewayProperties;    }    @Override    public List<SwaggerResource> get() {    //做了一个简单缓存,没仔细设计,其实可有可无用处不大        if (resources == null) {            resources = new ArrayList<>();            List<String> routes = new ArrayList<>();            routeLocator.getRoutes().subscribe(route -> routes.add(route.getId()));            //结合配置的route-路径(Path),和route过滤,只获取有效的route节点            gatewayProperties.getRoutes().stream()                    .filter(routeDefinition -> routes.contains(routeDefinition.getId()))                    .forEach(routeDefinition -> routeDefinition.getPredicates().stream()                            .filter(predicateDefinition -> ("Path").equalsIgnoreCase(predicateDefinition.getName()))                            .forEach(predicateDefinition -> resources.add(swaggerResource(routeDefinition.getId(),                                    predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0")                                            .replace("@Configuration@EnableSwagger2public class Swagger2 {    //是否开启swagger,正式环境一般是需要关闭的,可根据SpringBoot的多环境配置进行设置    @Value(value = "${swagger.enabled}")    private Boolean swaggerEnabled;    //显示文档版本    @Value(value = "${swagger.version}")    private String version;    //标题    @Value(value = "${swagger.title}")    private String title;    //描述信息    @Value(value = "${swagger.description}")    private String description;    //扫描接口位置 也可以配置到Nacos中    private static final String base_package = "com.demo.controller";    @Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)// 指定api类型为swagger2                .apiInfo(apiInfo())// 用于定义api文档汇总信息                // 是否开启                .enable(swaggerEnabled).select()                // 扫描的路径包                .apis(RequestHandlerSelectors.basePackage(base_package))                // 指定路径处理PathSelectors.any()代表所有的路径                .paths(PathSelectors.any()).build()                .pathMapping("/")                .securitySchemes(securitySchemes())                .securityContexts(securityContexts());    }    //securitySchemes的ApiKey中增加一个名为“Authorization”,type为“header”的参数    private List<ApiKey> securitySchemes() {        List<ApiKey> apiKeyList = new ArrayList();        apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));        return apiKeyList;    }    private List<SecurityReference> defaultAuth() {        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];        authorizationScopes[0] = authorizationScope;        List<SecurityReference> securityReferences = new ArrayList<>();        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));        return securityReferences;    }    private List<SecurityContext> securityContexts() {        List<SecurityContext> securityContexts = new ArrayList<>();        securityContexts.add(                SecurityContext.builder()                        .securityReferences(defaultAuth())                        .forPaths(PathSelectors.regex("^(?!auth).*$"))                        .build());        return securityContexts;    }    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title(title)// 文档页标题                .contact(new Contact("s","s.com","s@163.com"))// 详细信息                .version(version)// 文档版本号                .termsOfServiceUrl("www.baidu.com")// 网站地址                .description(description)                .build();    }}```java

到此,关于“Gateway+Swagger2配置聚合文档的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Gateway+Swagger2配置聚合文档的方法是什么

本文链接: https://lsjlt.com/news/354515.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Gateway+Swagger2配置聚合文档的方法是什么
    这篇文章主要介绍“Gateway+Swagger2配置聚合文档的方法是什么”,在日常操作中,相信很多人在Gateway+Swagger2配置聚合文档的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”G...
    99+
    2023-07-05
  • Surge多配置文件聚合配置方法
    目录 摘要1. Surge配置原理2. Surge托管配置3. Surge多配置文件聚合配置(1)找到配置文件(2)编辑配置文件 参考 摘要 Surge 是一个在 macOS 和...
    99+
    2023-09-04
    服务器 网络
  • Springcloud Gateway相关配置方法是什么
    这篇“Springcloud Gateway相关配置方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spr...
    99+
    2023-07-05
  • gateway网关路由配置的方法是什么
    gateway网关路由配置可以通过以下几种方法进行:1. 配置文件:可以在gateway的配置文件中定义路由规则。通常使用YAML或...
    99+
    2023-09-18
    gateway
  • Swagger2不被SpringSecurity框架拦截的配置方法是什么
    本篇内容主要讲解“Swagger2不被SpringSecurity框架拦截的配置方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Swagger2不被SpringSecurity框架拦截的...
    99+
    2023-07-05
  • Maven聚合开发的方法是什么
    这篇文章主要介绍“Maven聚合开发的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Maven聚合开发的方法是什么”文章能帮助大家解决问题。一、Maven聚合开发_继承关系 &n...
    99+
    2023-07-05
  • Gateway集成Netty服务配置加载的方法是什么
    这篇文章主要讲解了“Gateway集成Netty服务配置加载的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Gateway集成Netty服务配置加载的方法是什么”吧!一、Netty...
    99+
    2023-07-05
  • PostgreSQL聚合函数的实现方法是什么
    本篇内容介绍了“PostgreSQL聚合函数的实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • C++聚合体初始化的方法是什么
    本篇内容介绍了“C++聚合体初始化的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!聚合体初始化(aggregate initial...
    99+
    2023-07-05
  • mongodb聚合管道求和的方法是什么
    在MongoDB中,可以使用聚合管道(aggregation pipeline)的$group操作符来对数据进行求和。 $group...
    99+
    2023-08-24
    mongodb
  • oracle聚合函数去重的方法是什么
    在Oracle数据库中,可以使用DISTINCT关键字来对聚合函数的结果进行去重操作。例如,使用SUM函数对某一列进行求和操作时,可...
    99+
    2024-04-09
    oracle
  • mongodb文档创建的方法是什么
    在MongoDB中,可以使用以下方法创建文档:1. 使用insertOne()方法创建一个文档。该方法将一个文档对象作为参数,将其插...
    99+
    2023-09-01
    mongodb
  • jspXCMS文档管理的方法是什么
    本篇内容介绍了“jspXCMS文档管理的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!文档是一个网站最主要的数据。可以通过模型定义...
    99+
    2023-06-26
  • mongodb删除文档的方法是什么
    要删除MongoDB中的文档,可以使用db.collection.deleteOne()或db.collection.deleteM...
    99+
    2024-04-09
    mongodb
  • MongoDB的文档验证方法是什么
    MongoDB的文档验证方法是通过使用JSON schema来定义文档的结构和约束条件。JSON schema是一种用于描述JSON...
    99+
    2024-05-07
    MongoDB
  • ElasticSearch整合SpringBoot搭建配置的方法是什么
    本文小编为大家详细介绍“ElasticSearch整合SpringBoot搭建配置的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“ElasticSearch整合SpringBoot搭建配置的方法是什么”文章能帮助大家解决疑惑,下...
    99+
    2023-07-05
  • ABAP文档生成方法是什么
    这篇文章主要介绍“ABAP文档生成方法是什么”,在日常操作中,相信很多人在ABAP文档生成方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ABAP文档生成方法是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-04
  • Golang生成Excel文档的方法是什么
    这篇文章主要介绍“Golang生成Excel文档的方法是什么”,在日常操作中,相信很多人在Golang生成Excel文档的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Golang生成Excel文档...
    99+
    2023-07-05
  • log4j指定配置文件的方法是什么
    在使用log4j时,可以通过以下几种方法来指定配置文件:1. 将log4j的配置文件命名为log4j.properties或log4...
    99+
    2023-10-09
    log4j
  • tomcat文件下载配置的方法是什么
    要配置Tomcat服务器以允许文件下载,可以按照以下步骤进行操作: 在Tomcat的配置文件server.xml中添加一个Cont...
    99+
    2024-04-09
    tomcat
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作