Swagger之集成与用法

news2024/11/27 10:49:05

简介

        Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务;

作用

        1.接口的文档在线生成

        2.功能测试

SpringBoot集成Swagger

        1.创建一个普通的SpringBoot项目,支持web应用

        2.pom中加入Maven依赖

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-spring-web</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

        3.新建接口,确保正常运行

@RestController
public class HelloController {

    @RequestMapping(value = "/hello")
    public String hello(){
        return "hello";
    }
}

        4.SwaggerConfig配置

@Configuration  //配置类
@EnableSwagger2 //开启Swagger2自动配置
public class SwaggerConfig {
    
}

        5.测试:http://localhost:8080/swagger-ui.html

Swagger配置

        1.基本配置

@Configuration  //配置类
@EnableSwagger2 //开启Swagger2自动配置
public class SwaggerConfig {
    @Bean
    public Docket docket(Environment environment){
        //设置显示swagger显示的环境
        Profiles profiles = Profiles.of("dev","test");
        //检测当前环境
        boolean flag = environment.acceptsProfiles(profiles);

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                // 是否开启swagger true、false
                .enable(flag)
                // 设置扫描接口
                .select()
                // 配置如何扫描接口
                .apis(RequestHandlerSelectors
                        //.any() // 扫描全部的接口,默认
                        //.none() // 全部不扫描
                        .basePackage("com.lgcgk.swagger.controller") // 扫描指定包下的接口,最为常用
                        //.withClassAnnotation(RestController.class) // 扫描带有指定注解的类下所有接口
                        //.withMethodAnnotation(PostMapping.class) // 扫描带有只当注解的方法接口
                )
                .paths(PathSelectors
                        .any() // 满足条件的路径,该断言总为true
                        //.none() // 不满足条件的路径,该断言总为false(可用于生成环境屏蔽 swagger)
                        //.ant("/user/**") // 满足字符串表达式路径
                        //.regex("") // 符合正则的路径
                )
                .build();
    }

    /**
     * 配置swagger信息
     * @return
     */
    private ApiInfo apiInfo(){
        //作者信息
        Contact DEFAULT_CONTACT = new Contact("lgcgk","https://blog.csdn.net/qq_35056891","1462568882@qq.com");

        return new ApiInfo("lgcgk的API文档",
                "细节决定成败",
                "v1.0",
                "https://blog.csdn.net/qq_35056891",
                DEFAULT_CONTACT,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}

        2.配置API分组

        在SwaggerConfig配置类的docket方法中,如果没有配置分组,默认是default。通过groupName()方法即可配置分组

@Bean
public Docket docket(Environment environment) {
   return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
      .groupName("hello") // 配置分组
       // 省略配置....
}

        3.配置多个分组方法

@Bean
public Docket docket1(){
    return new Docket(DocumentationType.SWAGGER_2).groupName("A");
}
@Bean
public Docket docket2(){
    return new Docket(DocumentationType.SWAGGER_2).groupName("B");
}
@Bean
public Docket docket3(){
    return new Docket(DocumentationType.SWAGGER_2).groupName("C");
}

常用注解

Swagger的所有注解定义在io.swagger.annotations包下

Swagger注解简单说明
@Api(tags = “xxx模块说明”)作用在模块类上
@ApiOperation(“xxx接口说明”)作用在接口方法上
@ApiModel(“xxxPOJO说明”)作用在模型类上:如VO、BO
@ApiModelProperty(value = “xxx属性说明”,hidden = true)作用在类方法和属性上,hidden设置为true可以隐藏该属性
@ApiParam(“xxx参数说明”)作用在参数、方法和字段上,类似@ApiModelProperty

总结

  1. 我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息

  2. 接口文档要实时更新

  3. 可以在线测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8S的的就绪探针readinessProbe 和存活探针livenessProbe

就绪探针&#xff1a;readinessProbe 什么是readinessProbe readinessProbe&#xff1a; 当Pod需要开始接收流量时&#xff0c;“kubelet” 将定期检查 readinessProbe&#xff0c;如果该probe处于成功状态&#xff0c;则容器视为就绪&#xff0c;并将 Pod 标记为已就绪状态。…

栈的基本操作详细介绍 看了就会!!!

文章目录 栈的介绍栈的概念栈的结构 栈的实现&#xff08;动态数组实现&#xff09;初始化栈入栈出栈获取栈顶元素判断栈是否为空获取栈中有效元素的个数销毁栈 栈的介绍 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进…

机器学习期末复习 决策树相关

决策树基本原理&#xff1a;基于信息增益、增益率与基尼系数的划分选择&#xff0c;预剪枝与后剪枝&#xff0c;多变量决策树以及决策树优缺点概述 如何避免决策树过拟合&#xff1f; 预剪枝和后剪枝 预剪枝&#xff1a; 1.生成结点&#xff0c;根据信息增益选出最优划分属…

玩转Google开源C++单元测试框架Google Test系列(gtest)之八 - 打造自己的单元测试框架

一、前言 上一篇我们分析了gtest的一些内部实现&#xff0c;总的来说整体的流程并不复杂。本篇我们就尝试编写一个精简版本的C单元测试框架&#xff1a;nancytest &#xff0c;通过编写这个简单的测试框架&#xff0c;将有助于我们理解gtest。 二、整体设计 使用最精简的设计…

Docker下Gitlab配置私有证书

Docker下Gitlab配置私有证书 1 创建私有证书※2 内网穿透配置&#xff08;可选&#xff09;3 Gitlab 配置私有证书3.1 新增存储HTTPS证书文件夹3.2 启动容器3.3 开放HTTPS端口3.4 设置IP、端口3.5 配置邮箱3.6 让配置生效3.7 访问 1 创建私有证书 参考 制作HTTPS私有证书 —HT…

玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制

一、前言 gtest提供了多种事件机制&#xff0c;非常方便我们在案例之前或之后做一些操作。总结一下gtest的事件一共有3种&#xff1a; 1. 全局的&#xff0c;所有案例执行前后。 2. TestSuite级别的&#xff0c;在某一批案例中第一个案例前&#xff0c;最后一个案例执行后。…

【STM32】基础知识 第十四课 串口通信: 深入探究与应用

【STM32】基础知识 第十四课 串口通信: 深入探究与应用 概述串口通信的基本原理串行通信 & 并行通信串行通信并行通信串行 vs 并行 单工/半双工/全双工单工通信半双工通信全双工通信总结 同步通信/异步通信同步通信异步通信波特率 常见的串行通信接口STM32 串口配置STM32 串…

linux pl320 mbox控制器驱动分析-(3) pl320驱动代码分析

linux pl320 mbox控制器驱动分析-&#xff08;3&#xff09;pl320驱动代码分析 1 pl320 mbox控制器宏定义2 初始化接口3 ipc_handler mbox中断处理函数4 数据的收发4.1 数据发送4.2 数据接收4.3 中断发送接收测试代码 5 设置以及清除远端目的core5.1 设置远端目的core5.2 清除远…

中东地区DNSpionage安全事件分析

事件摘要 思科Talos公司最近发现了一个以影响.gov域名为攻击手段的安全事件&#xff0c;而此安全事件主要针对黎巴嫩和阿拉伯联合酋长国&#xff08;阿联酋&#xff09;以及一家私营的黎巴嫩航空公司。根据我们的研究&#xff0c;攻击者花费了许多时间来了解受害者的基础网络&…

第九章结构性模式—桥接模式

文章目录 桥接模式解决的问题概念结构 实例使用场景 结构型模式描述如何将类或对象按某种布局组成更大的结构&#xff0c;有以下两种&#xff1a; 类结构型模式&#xff1a;采用继承机制来组织接口和类。对象结构型模式&#xff1a;釆用组合或聚合来组合对象。 由于组合关系或…

【数据科学赛】评估大语言模型 #¥65000

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息由AI辅助创作&#xff0c;仅供参考 比赛名称 大语言模型评估[2] (见文末阅读原文) 大赛背景 本次竞赛希…

OTA实现设备升级方案

引言 空中下载技术&#xff08;Over-the-Air Technology&#xff0c; OTA&#xff09;是通过移动通信的空中接口实现对移动终端设备进行远程管理的技术。 该技术在IOT行业非常的重要&#xff0c;当随着市场上的产品越来越多&#xff0c;保有量也越来越多&#xff0c;随着时间…

MySQL 性能调优及生产实战篇(一)

前言数据建模方案、数据类型优化存储引擎选择合理使用范式、反范式字符集选择主键选择适当数据冗余适当拆分数据类型优化更小更好简单就好尽量避免 NULL具体优化细节整型字符、字符串类型datetime、timestamp枚举代替字符串类型特殊类型 索引优化索引用处索引分类技术名词 总结…

由浅入深RPC通信原理实战

目录 1 背景知识2 RPC概述3 RPC框架实现要点3.1 注册中心3.2 代理技术3.3 序列化技术3.4 RPC通信协议3.5 系统IO3.6 超时重试机制3.7 时间轮算法3.8 负载均衡策略3.9 熔断限流3.10 滑动窗口算法3.11 限流组件 1 背景知识 单体架构 RPC产生解决的问题&#xff1a; 序列化是指…

Ae:图层面板 - 视图选项

从图层面板 Layer Panel的“显示通道和色彩管理设置” Show Channel and Color Manage Settings按钮中可以选择各种视图模式&#xff0c;与 Alpha 通道相关的一些视图可直接通过图层面板左下方的按钮或者使用快捷键进行切换。 其它的视图选项&#xff08;图层面板的最下方一行&…

基于PyQt5的图形化界面开发——PyQt示例_扫雷

基于PyQt5的图形化界面开发——PyQt示例_扫雷 前言1. 效果演示2. minesweeper.py3.图片文件其他文章 前言 今天来学习PyQt5的示例&#xff0c;其中主要涉及到一些触发函数窗口切换函数。 操作系统&#xff1a;Windows10 专业版 开发环境&#xff1a;Pycahrm Comunity 2022.3…

三分钟了解Spring Boot启动原理

大家通常只需要给一个类添加一个SpringBootApplication 注解&#xff0c;然后再加一个main 方法里面固定的写法 SpringApplication.run(Application.class, args); 那么spring boot 到底是如何启动服务的呢。 接下来咱们通过源码解析。 Spring Boot 的启动原理可以概括为以下几…

一篇吃透布隆过滤器(Bloom Filter)及其使用场景

目录 1、什么是布隆过滤器 2、布隆过滤器的原理 2.1 布隆过滤器的数据结构 2.2 布隆过滤器的检索和插入原理 2.3 布隆过滤器元素的修改和删除 3、布隆过滤器的使用场景 3.1 Redis通过布隆过滤器防止缓存穿透 3.2 RocketMQ通过布隆过滤器防止消息重复消费 4、布隆过滤器…

DAPP开发(三)——智能合约开发

智能合约 Remix IDE 是开发以太坊智能合约的在线IDE工具&#xff0c;部署简单的智能合约非常方便。 http://remix.ethereum.org truffle 一个世界级的智能合约开发框架&#xff0c;专为智能合约而生。 管理智能合约的生命周期自动化合约测试可编程&#xff0c;可部署&…

linux安装jupyter notebook

目录 使用miniconda的conda安装 切换conda镜像源有两种方法: 设置密码: 修改配置文件: 启动 关闭进程: 使用miniconda的conda安装 conda install jupyter 如果镜像不好用则切换conda镜像源 切换conda镜像源有两种方法: 1. [shuqiqshuqiq bin]$ ./conda config --add…