新冠阳性的第三篇博客,使用Swagger管理API

news2024/11/16 17:32:11

新冠阳性的第三篇博客,使用Swagger管理API

  • 1.Swagger简介
  • 2.在项目中使用Swagger
  • 3.配置swagger
  • 4.swagger配置扫描接口
  • 5.配置API文档的分组
  • 6.swagger的实体类扫描
  • 7.给Controller加文档注释

今天是新冠确诊的第二天,得了新冠也不要忘记学习啊!🥯

1.Swagger简介

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

  • 支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。
  • 提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。

2.在项目中使用Swagger

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

Springfox 使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X +使用的是PathPatternMatcher,所以我们还需要修改一下SpringBoot配置文件内容:

新增如下配置:

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

配置swagger 编写一个configure类:

@Configuration
@EnableSwagger2 // 开启Swagger2
public class SwaggerConfig {
}

之后启动项目,访问如下地址,可以看到Swagger的初始化页面:

http://localhost:8080/swagger-ui/index.html#/

可以看到,我们编写的HelloController已经被Swagger扫描到了!

在这里插入图片描述


3.配置swagger

我们可以配置Swagger,实现基本页面的自定义:如下代码:

@Configuration
@EnableSwagger2 // 开启Swagger2
public class SwaggerConfig {
    // 配置了swagger的bean实例
    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo());
    }

    // 配置swagger信息 apiInfo
    private ApiInfo apiInfo() {
        Contact contact = new Contact("klza", "http://localhost:8080", "3390205563@qq.com");
        return new ApiInfo(
                "klza",
                "中国最大的网络安全服务商",
                "1.0",
                "imustctf.top",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}

效果:

在这里插入图片描述


4.swagger配置扫描接口

swagger默认会扫描全部路径下的API信息,我们可以进一步细化它的扫描范围:

需要对docket方法稍作改动:

例如:我们只想扫描controller包:

@Bean
public Docket docket() {
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.klza.controller"))
            .build();
}

此时重启项目,error的API接口就扫描不到了!

在这里插入图片描述


5.配置API文档的分组

修改Docket中的groupName属性即可,若要配置多个组,就需要多个Docket:

先看看如何分组:

@Bean
public Docket docket() {
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .groupName("视频业务")
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.klza.controller"))
            .build();
}

重启项目,看到了分组情况:

在这里插入图片描述

配置多个分组,开启多个Docket即可:

@Bean
public Docket docket() {
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .groupName("视频业务")
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.klza.controller"))
            .build();
}

@Bean
public Docket docket2() {
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .groupName("军火库业务");
}

@Bean
public Docket docket3() {
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .groupName("竞赛业务");
}

在这里插入图片描述


6.swagger的实体类扫描

swagger很聪明,在controller中返回一个实体类对象,之后swagger就会在api中的model中生成一个实体类

例如:我们定义一个pojo类:

public class User {
    public String name;
    public String info;
}

在controller中使用它:

@GetMapping("/user")
public User user() {
    return new User();
}

重新启动项目,在model中会生成对应的实体类信息:

在这里插入图片描述

这还不够!我们还可以给实体类及其字段增加文档注释:

@ApiModel("用户实体类") // 给类加一个api注释
public class User {
    @ApiModelProperty("名字") // 给字段加一个api注释
    public String name;
    @ApiModelProperty("个人简介")
    public String info;
}

重启项目,看看效果:

在这里插入图片描述


7.给Controller加文档注释

给一个controller的方法加注释,使用@ApiOperation("xxx")

@RestController
public class HelloController {
    @ApiOperation("Hello控制类")
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }

    @ApiOperation("获得一个user")
    @GetMapping("/user")
    public User user() {
        return new User();
    }
}

在这里插入图片描述

还可以给参数加文档注释:

public String hello(@ApiParam("用户名") String username){
    return "hello";
}

在这里插入图片描述

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

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

相关文章

一文读懂自动驾驶汽车:软硬结合 造就未来出行体验(上篇)

在 GTC 2022 秋季大会上&#xff0c;NVIDIA 汽车部门营销经理 Katie Burke Washabaugh&#xff0c;面向想要了解自动驾驶汽车、并有志于投身自动驾驶行业的观众&#xff0c;介绍了自动驾驶汽车的历史、工作原理、相关技术以及发展前景。本文对此次分享的精华内容进行了汇总和整…

基于蒙特卡诺的电动汽车对电网影响(数据+Matlab代码)

目录 0 知识回顾 1 电网没考虑电动汽车时 1.1 案例1&#xff08;4kw&#xff09; 1.2 案例2&#xff08;7kw&#xff09; 31.3 案例3&#xff08;20kw&#xff09; 2 静态测试 2.1 收敛的最优结果 2.2 改变电动汽车数量的影响 2.3 收敛的最优结果 3 动态测试 4 一…

图结构

图结构 从哥尼斯堡的七桥问题开始 ▪ 18世纪初普鲁士的哥斯尼堡,有一条河穿过,河上有两个小岛,有七座桥把两个小岛与河岸联系起来 ▪ 问题:一个步行者怎样才能不重复、不遗漏地一次走完七座桥&#xff0c;最后回到出发点。 ▪ 难点&#xff1a;可能的走法----7&#xff01;5…

苹果给出 AirTag 固件更新日志,苹果Find My功能越来越完善

自 11 月以来&#xff0c;苹果已经为其 AirTag 物品追踪器发布了两个固件更新。然而&#xff0c;该公司此前并没有详细说明这些更新带来了什么变化。不过有网友发现&#xff0c;苹果终于分享了最新 AirTag 固件更新的更新内容。 以下是 AirTag 固件更新 2.0.24 和 2.0.36 带来…

[力扣c++实现]85. 最大矩形

85. 最大矩形 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”…

2022最新最全的Java面试八股文小抄开源!带你摸熟 20+ 互联网公司面试考点

2022真是多变的一年&#xff0c;相对往年我们会发现今年猎头电话少了&#xff0c;大部分企业年终奖缩水&#xff0c;加薪幅度也不如往年&#xff0c;选择好 offer 就要趁早&#xff0c;现在开始准备吧&#xff0c;刷一波 Java 面试题&#xff0c;能回答 70%就去 BATJTMD 大胆试…

基于SSM实现的网上手机商城项目(附源码)

基于SpringSpring MVCMyBatisLayui框架 项目完整源码下载 https://download.csdn.net/download/DeepLearning_/87327169 功能&#xff1a; 前台 登录、注册、注销查看商品、商品评论、热销商品收藏、取消收藏商品加入购物车购物车增、删、改、查购买商品、确认收货、删除已…

stop pin/ignore pin/exclude pin/float pin

stop pin、ignore pin、exclude pin和float pin的区别如下图&#xff1a; 1、Stop pins stop pin是clock tree的leaf pin&#xff0c;作为clock tree的终点&#xff0c;需要balance insertion delay&#xff08;latency&#xff09;&#xff0c;clock sink都是stop pin。 2、…

七、http模块

HTTP —— 超文本传输协议&#xff0c;用于规范客户端浏览器和服务端以何种格式进行通信和数据交互&#xff1b;HTTP由请求和响应构成的&#xff0c;是一个标准的客服端服务器模型。 HTTP请求响应过程 先简单的来了解以下HTTP的请求响应过程&#xff1a;1.地址解析&#xff1a…

普通人为什么要学习python?有什么用

为什么要学习python&#xff1f; 比如新媒体职业&#xff1a; 1、简单来说&#xff0c;你会python后就相当于自己建造一个属于自己工作区块的微博热搜榜。你可以利用爬虫、收据抓取等技术知道哪些话题近期特别火&#xff0c;为什么火、有什么共通点&#xff0c;然后根据这些依…

3.1 多集放大电路的耦合方式

在实际应用中&#xff0c;常对放大电路的性能提出多方面的要求。所以&#xff0c;仅靠任何一种基本的放大电路并不能满足要求&#xff0c;此时可以选择多个基本放大电路级联在一起构成多级放大电路。 组成多级放大电路的每一个基本放大电路称为一级&#xff0c;级与级之间的连接…

Win11的两个实用技巧系列之玩游戏闪跳、错误代码0x80004005解决

Win11玩游戏经常无缘无故跳回桌面怎么解决? 最近有Win11用户反应&#xff0c;自己在玩游戏的时候遇到了经常无缘无故跳回桌面的情况&#xff0c;本文就为大家带来了详细的解决方法&#xff0c;需要的朋友一起看看吧 最近有Win11用户反应&#xff0c;自己在玩游戏的时候遇到了…

关于ShardingSphere内置分片算法及其数据倾斜问题总结

ShardingSphere是一款不错的分库分表中间件&#xff0c;并且其内置提供了多种分片算法。但是使用内置的分片算法会造成数据倾斜问题。下面以5.2.0版本的ShardingSphere详细介绍下几种内置分片算法并且分析下数据倾斜问题。 一、ShardingSphere内置分片算法介绍 根据官网描述&…

web前端-javascript-包装类(String,Number,Boolean,基本数据类型调用方法先转换为对象再调换)

包装类 1. 说明 在 JS 中为我们提供了三个包装类&#xff0c;通过这三个包装类可以将基本数据类型的数据转化为对象String() 可以将基本数据类型字符串转换为 String 对象 Number() 可以将基本数据类型的数字转换为 Number 对象 Boolean() 可以将基本数据类型的布尔值转换为 …

【C语言】重要函数atoi的使用

目录 一、atoi函数的介绍 二、atoi函数的使用 三、atoi函数的模拟实现 一、atoi函数的介绍 一个专门将字符串转换为整数的库函数&#xff0c;具体用法如下&#xff1a; 字符串str&#xff0c;将其内容转化为整数&#xff0c;该整数作为int值返回。 二、atoi函数的使用 atoi函…

CentOS7安装apache2并启动

CentOS7安装apache2并启动源码安装启动和停止源码安装 地址&#xff1a;https://downloads.apache.org/httpd/ https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz 参考&#xff1a;https://www.cnblogs.com/xiangqs/p/8663947.html 启动和停止 网上搜到的都是/usr/lo…

linux安装redis

目录 一、准备redis 二、上传redis到linux 三、编译与安装 四、修改配置文件 五、设置开放的服务或端口号或直接关闭防火墙 法1&#xff1a; 法2&#xff1a; 六、验证是否成功 1.直接在linux启动客户端 2.在windows启动redis客户端&#xff0c;连接linux的redis服务…

Java+mysql基于ssm的大学生求职招聘系统

本求职招聘管理系统主要包括系统用户管理模块、企业新闻管理模块、招聘发布会管理、招聘信息管理、登录模块、和退出模块等多个模块。它帮助求职招聘管理实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了求职招聘管理数据资源,有效的减…

Docker方式发布jar文件

在IDEA中将SpringBoot项目打为jar包步骤&#xff1a; 1、打开项目的pom.xml文件&#xff0c;添加或修改packaging标签&#xff0c;如下图&#xff1a; <packaging>jar</packaging> 2、点击右侧maven&#xff0c;展开lifecycle&#xff0c;先clean&#xff0c;然后…

普通人应该怎么赚钱,下班后可在家操作的四个兼职副业分享

大家好&#xff0c;我是蝶衣王的小编 不少朋友发觉&#xff0c;单靠薪水好像已经很难再存下钱了&#xff0c;甚至有时候还不够一个月的开销。实际上&#xff0c;如果你想要提升月收益&#xff0c;你可以选择发展副业。那发展什么副业才能赚钱呢 有小伙伴要问&#xff1a;我要…