首页 > 编程语言 >【Java】【Swagger】——接口过滤

【Java】【Swagger】——接口过滤

时间:2024-09-20 10:26:19浏览次数:11  
标签:API Java 展示 接口 apiInfo 注解 Swagger Docket

在前后端分离时代,Swagger能够实时更新API,十分好用。那么如果根据实际业务需要,展示接口呢?

前提

已经成功使用Swagger。知道增加 @Bean 注解增加分组。此时不同的分组就涉及到不同的过滤。如何过滤接口?

增加注解@ApiIgnore

假设,增加注解前有两个接口。

 Demo2Controller增加 @ApiIgnore 注解后。Swagger文档只包含一个注解。@ApiIgnore 可以放在类名上,用款放在具体的接口上。

 

 apis()方法 : 过滤包

any() : 所有的

 @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())  // API的基本信息,展示在文档页面中(自定义展示信息)
                // 设置哪些接口暴露给Swaager展示
                .select()
                // 当前项目所有对的接口
                .apis(RequestHandlerSelectors.any())
                .build();
    }

none() :无

 @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())  // API的基本信息,展示在文档页面中(自定义展示信息)
                // 设置哪些接口暴露给Swaager展示
                .select()
                // 不显示任何接口
                .apis(RequestHandlerSelectors.none())
                .build();
    }

basePackage() : 包名及子包的接口

@Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())  // API的基本信息,展示在文档页面中(自定义展示信息)
                // 设置哪些接口暴露给Swaager展示
                .select()
                // 包com.example.demo1以及子包
                .apis(RequestHandlerSelectors.basePackage("com.example.demo1"))
                .build();
    }

withMethodAnnotation: 扫描方法上的注解

@Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())  // API的基本信息,展示在文档页面中(自定义展示信息)
                // 设置哪些接口暴露给Swaager展示
                .select()
                // 扫码方法上的注解(即注解包含 @ApiOperation),这种方式比较灵活,推荐
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .build();
    }

 

withClassAnnotation : 扫描类上的注解

  @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())  // API的基本信息,展示在文档页面中(自定义展示信息)
                // 设置哪些接口暴露给Swaager展示
                .select()
                // 扫描类上的注解(即注解包含 @Api)
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                .build();
    }

apis下的条件不是只有一条,可以用.and 或.or 组合起来

@Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())  // API的基本信息,展示在文档页面中(自定义展示信息)
                // 设置哪些接口暴露给Swaager展示
                .select()
                // 扫描类上的注解(即注解包含 @Api)且在包 "com.example.demo1" 的接口
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)
                        .and(RequestHandlerSelectors.basePackage("com.example.demo1"))
                )
                .build();
    }

path :  过滤路径

any: 过滤所有

@Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())  // API的基本信息,展示在文档页面中(自定义展示信息)
                // 设置哪些接口暴露给Swaager展示
                .select()
                // 过滤所有的路径
                .paths(PathSelectors.any())
                .build();
    }

none: 无

 @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())  // API的基本信息,展示在文档页面中(自定义展示信息)
                // 设置哪些接口暴露给Swaager展示
                .select()
                // 不过滤任何路径
                .paths(PathSelectors.none())
                .build();
    }

ant : 过滤路径下的

 @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())  // API的基本信息,展示在文档页面中(自定义展示信息)
                // 设置哪些接口暴露给Swaager展示
                .select()
                // 过滤/user路径下的接口
                .paths(PathSelectors.ant("/user/**"))
                .build();
    }

regex: 正则表单四匹配

 @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())  // API的基本信息,展示在文档页面中(自定义展示信息)
                // 设置哪些接口暴露给Swaager展示
                .select()
                // 过滤路径名称 ( demo+一个字符/+ 任意目录 ) ? 匹配1个字符 ; * 匹配0个或多个字符 ; ** 匹配0个或多个目录
                .paths(PathSelectors.regex("/demo.?/.*"))
                .build();
    }

总之,过滤路径的方法有3中,通过注解不显示、通过apis和path指定包名和路径名。可以根据实际需要,组合过滤。

参考文档

SpringBoot中使用Swagger的最全方法详解:https://www.jb51.net/program/306740lkd.htm

Swagger的简单应用:https://blog.csdn.net/m0_46313726/article/details/123285695

标签:API,Java,展示,接口,apiInfo,注解,Swagger,Docket
From: https://www.cnblogs.com/luyj00436/p/18421728

相关文章

  • 基于Java中的SSM框架实现数据结构课堂考勤管理平台项目【项目源码+论文说明】
    基于java中的SSM框架实现数据结构课堂考勤管理平台演示【内附项目源码+LW说明】摘要高校的不断扩张让在校学生数量不断的增加,对于教师和管理人员的需求也在不断地增强,对日常的学生考勤管理的工作量也在日益增加,传统的人工点名签到的考勤管理模式已经给无法适用于当前高校......
  • 基于Java中的SSM框架实现商品分类管理系统项目【项目源码+论文说明】
    基于java中的SSM框架实现商品分类管理系统演示【内附项目源码+LW说明】摘要随着我国经济的高速发展和计算机水平的不断进步,我国人民的生活早已发生了翻天覆地的改变。在目前这个互联网技术十分发达的年代,人们的生活方式有了质的飞跃,很多时候不需要再自己去做一些事情,通过......
  • Java中List接口的学习
    List接口目录List接口ArrayListLinkedListVector(过时)Stack(过时)ArrayListArrayList就是动态数组,它提供了①动态的增加和减少元素②实现了ICollection和IList接口③灵活的设置数组的大小ArrayList是一个其容量能够动态增长的动态数组。它继承了AbstractList,实现了List、Ran......
  • Java 接口interface
    目录1.定义接口2.实现接口3.多重继承4.抽象方法5.默认方法6.静态方法7.私有方法8.常量在Java中,接口(interface)是一种引用类型,它类似于类(class),但是与类不同的是,接口不能包含任何具体的方法实现(除了默认方法和静态方法之外)。接口定义了一组规则或行为,这些规则由实现该接......
  • 基于Java中的SSM框架实现个人网站管理平台项目【项目源码+论文说明】
    基于java中的SSM框架实现在线个人网站管理平台演示【内附项目源码+LW说明】摘要随着社会及个人社交应用平台的飞速发展,人们的沟通成本逐渐降低,互联网信息的普及也进一步提升了人们对于信息的需求度,通过建立个人网站的方式来展示自己的生活信息同时利用平台结交新的朋友,借......
  • Java花店在线销售及数据分析系统的设计与实现
    太原理工花店在线销售及数据分析系统的设计与实现计算机毕业设计案例基于Java的建筑废弃物管理系统基于ASP.NET的OA系统基于Java的企业质量业绩管理系统Java北方民族大学停车场管理系统基于Java的产品成本管理系统基于PHP的学生事务管理系统Java健身俱乐部基于Java......
  • JavaScript语法入门8 JavaScript中的三种引号
    JavaScript中三种引号,分别是单引号(’xx’)、双引号("xx”)、反引号(`xx`)。三种引号中,单引号和双引号的作用是相同的,用于定义字符串。而反引号是一种扩展功能。单引号、双引号单引号、双引号包裹起来的值是字符串,按照惯例,单引号或者双引号必须成对使用,不能交叉使用。 正确示例:letnam......
  • Java 在 GIS 领域的学习路线?
    Java是一门广泛应用于企业级开发的编程语言,而GIS则是一种常用于地理信息处理和分析的技术。将Java与GIS结合起来,可以在企业级应用中实现更多的功能和业务需求,且在实际领域越来越广泛。Java在GIS中重要的作用1、跨平台性Java具有跨平台的特性,Java在地理信息系统(GIS)领域发挥......
  • Java中的设计模式
    最近在做Java笔试题时看到一道关于Java设计模式的,Java的设计模式有很多,这里来给大家普及一下:Java中的设计模式(DesignPatterns)是软件开发人员在软件开发过程中面临的一般至重复出现的问题的解决方案。它们是一种经过分类编目的、可复用的、经过良好测试的设计方案,通常用于解决常......
  • java重点学习-JVM类加载器+垃圾回收
    12.7类加载器JVM只会运行二进制文件,类加载器的作用就是将字节码文件加载到JVM中,从而让Java程序能够启动起来。类加载器有哪些启动类加载器(BootStrapClassLoader):加载JAVAHOME/jre/lib目录下的库扩展类加载器(ExtClassLoader):主要加载JAVAHOME/jre/lib/ext目录中的类......