6.Swagger的实战使用

news2025/2/26 15:11:23

六.Swagger的实战使用

1.什么是swagger

2.swagger的基本使用

3.swagger实战使用

六.Swagger的实战使用

1.什么是swagger

  • swagger是后端接口文档的生成并且提供ui界面进行测试
  • 过去用postman测试
    缺点:需要自己写地址,如果项目变了需要自己更改

2.swagger的基本使用

①mybatis-plus代码生成器支持swagger(项目中代码生成器可以直接加入swagger注解)

  • 原理
    代码生成器根据数据表中的描述字段来生成对实体类的文档描述
package com.atguigu.srb.core;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;

public class CodeGenerator {
    @Test
    public void genCode() {

        // 1、创建代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 2、全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("Likejin");
        //open等于true时,生成完代码后,打开资源管理器
        gc.setOpen(false); //生成后是否打开资源管理器
        //去掉service接口前缀I
        gc.setServiceName("%sService");	//去掉Service接口的首字母I
        //自增策略
        gc.setIdType(IdType.AUTO); //主键策略
        //自动生成接口文档@API
        gc.setSwagger2(true);//开启Swagger2模式
        mpg.setGlobalConfig(gc);

        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:13306/db200921_srb_core?useUnicode=true&characterEncoding=utf8&useSSL=false");
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("abc123");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.atguigu.srb.core");
        pc.setEntity("pojo.entity"); //此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
        mpg.setPackageInfo(pc);

        // 5、策略配置
        //能够完成数据库表名从下划线到类的驼峰习惯
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略


        //能够完成数据库字段名从下划线到类的属性驼峰习惯
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        //使用lombok的注解修饰
        strategy.setEntityLombokModel(true); // lombok
        //生成逻辑删除字段名
        strategy.setLogicDeleteFieldName("is_deleted");//逻辑删除字段名
        //符合阿里巴巴规范,去掉is前缀
        strategy.setEntityBooleanColumnRemoveIsPrefix(true);//去掉布尔值的is_前缀(确保tinyint(1))

        //和controller的生成有关,全部使用@RestController
        strategy.setRestControllerStyle(true); //restful api风格控制器,restController返回json数据
        mpg.setStrategy(strategy);

        // 6、执行
        mpg.execute();
    }
}

②swagger文档的生成和ui界面

  • 引入pom
<!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
        </dependency>
        <!--swagger ui-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
        </dependency>
  • swaager的配置
    生成分组
package com.atguigu.srb.base.config;

import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2Config {

    //生成admin分组
    @Bean
    public Docket adminApiConfig() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("adminApi")//增加分组
                //增加分组的描述
                .apiInfo(adminApiInfo())
                .select()
                //对路径为/admin的接口分到一组
                .paths(Predicates.and(PathSelectors.regex("/admin/.*")))
                .build();
    }

    private ApiInfo adminApiInfo(){
        return new ApiInfoBuilder()
                .title("尚融宝后台管理系统API文档")
                .description("本文档描述了尚融宝管理系统各个接口的调用方式")
                .contact(new Contact("like","www.baidu.com","13030@qq.com"))
                .build();

    }

    //生成web分组
    @Bean
    public Docket webApiConfig() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApiInfo")
                .apiInfo(adminApiInfo())
                .select()
                .paths(Predicates.and(PathSelectors.regex("/api/.*")))
                .build();
    }
    private ApiInfo webApiInfo(){
        return new ApiInfoBuilder()
                .title("尚融宝网站API文档")
                .description("本文档描述了尚融宝网站各个接口的调用方式")
                .contact(new Contact("like","www.baidu.com","13030@qq.com"))
                .build();

    }

}

在这里插入图片描述

③实体类描述

  • 能够生成实体类的描述字段
    @ApiModel对实体类表名的描述
    @ApiModelProperty对实体类字段的描述
package com.atguigu.srb.core.pojo.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 积分等级表
 * </p>
 *
 * @author Likejin
 * @since 2023-04-09
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="IntegralGrade对象", description="积分等级表")
public class IntegralGrade implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "编号")
      @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "积分区间开始")
    private Integer integralStart;

    @ApiModelProperty(value = "积分区间结束")
    private Integer integralEnd;

    @ApiModelProperty(value = "借款额度")
    private BigDecimal borrowAmount;

    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;

    @ApiModelProperty(value = "更新时间")
    private LocalDateTime updateTime;

    @ApiModelProperty(value = "逻辑删除(1:已删除,0:未删除)")
    @TableField("is_deleted")
    @TableLogic
    private Boolean deleted;


}

在这里插入图片描述

  • 生成controller接口的描述
    @API 接口名称的描述
    @ApiOperation 接口内每一个方法的描述
package com.atguigu.srb.core.controller;


import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 * 积分等级表 前端控制器
 * </p>
 *
 * @author Likejin
 * @since 2023-04-09
 */
@Api(tags = "网站积分接口")
@RestController
@RequestMapping("/api/core/integralGrade")
public class IntegralGradeController {

    @ApiOperation("测试接口")
    @GetMapping("/test")
    public void test(){
        return;
    }

}


package com.atguigu.srb.core.controller.admin;


import com.atguigu.srb.core.pojo.entity.IntegralGrade;
import com.atguigu.srb.core.service.IntegralGradeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * <p>
 * 积分等级表 前端控制器
 * </p>
 *
 * @author Likejin
 * @since 2023-04-09
 */

@Api(tags="积分等级管理")
@CrossOrigin
@RestController
@RequestMapping("/admin/core/integralGrade")
public class AdminIntegralGradeController {

    @Resource
    private IntegralGradeService integralGradeService;

    @ApiOperation("积分等级列表")
    @GetMapping("/list")
    public List<IntegralGrade> listAll(){
        return integralGradeService.list();
    }
    @ApiOperation("根据ID删除数据记录")
    @DeleteMapping("/remove/{id}")
    public boolean removeById(
            @ApiParam("数据id")
            @PathVariable Long id){
        return integralGradeService.removeById(id);
    }


}


在这里插入图片描述

3.swagger实战使用(代码同上)

①引入依赖

②Swagger配置config

  • 生成文档
  • 配置分组(利用接口地址配置分组)

③Swagger控制实体类

  • 对类名的描述@ApiModel
  • 对类属性的描述@ApiModelProperty

④Swagger控制controller

  • 对接口描述@Api
  • 对接口中具体方法描述@ApiOperation

⑤结果

  • 访问项目的接口文档
    http://localhost:8110/swagger-ui.html
  • 分组结果
    在这里插入图片描述
  • 接口描述
    在这里插入图片描述
  • 实体类描述
    在这里插入图片描述

未更新

未更新

未更新

未更新

未更新

未更新

未更新

未更新

未更新

未更新

未更新

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

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

相关文章

CF区间DP作业题解

1. Recovering BST 由于互质关系不是传递的&#xff0c;所以尽量挂在树的最下面&#xff0c;刚好构成二叉树 f[i][j][0]f[i][j][0]f[i][j][0] 表示区间 [i,j][i,j][i,j] 以 iii 为根&#xff0c;是否可以构成一棵树。 f[i][j][1]f[i][j][1]f[i][j][1] 表示区间 [i,j][i,j][i,j…

Spring理论学习

1、什么是IOC IoC&#xff08;Inversion of Control:控制反转&#xff09; 是一种设计思想&#xff0c;而不是一个具体的技术实现。IoC 的思想就是将原本在程序中手动创建对象的控制权&#xff0c;交由 Spring 框架来管理。不过&#xff0c; IoC 并非 Spring 特有&#xff0c;…

阿里通义千问、ChatGPT和文心一言有何区别,在哪里能使用?

目前&#xff0c;聊天机器人技术在人工智能领域的发展越来越成熟了。现在已经有几款备受关注的聊天机器人产品问世&#xff0c;例如ChatGPT、阿里的通义千问和百度的文心一言。它们有什么区别&#xff0c;怎么使用呢&#xff1f; 其实&#xff0c;我也挺好奇的&#xff0c;毕竟…

人人拥有ChatGPT的时代来临了,这次微软很大方!

技术迭代的在一段时间内是均匀发展甚至止步不前的&#xff0c;但在某段时间内会指数级别的爆发。 ChatGPT背后的GPT 3.5训练据说花了几百万美金外加几个月的时间&#xff0c;参数大概有1700多亿。 这对于绝大多数的个人或企业来说绝对是太过昂贵的。 然而&#xff0c;微软&am…

月薪过 3w 的 软件测试工程师 都是怎么做到的?

对任何职业而言&#xff0c;薪资始终都会是众多追求的重要部分。前几年的软件测试行业还是一个风口&#xff0c;随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业&#xff0c;目前软件测试行业“缺口”已经基本饱和。 当然&#xff0c;我说的是最基础的功能测试的岗…

如何使用双轴XY平台绘制正弦曲线

1. 功能说明 本文示例将实现双轴XY平台绘制正弦曲线的功能。 2. 电子硬件 在这个示例中&#xff0c;采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09; 扩展板 Bigfish2.1扩展板 SH-ST步进电机扩展板 电池11.1V动…

跟着原子学I2C

I2C通讯 1、IIC总线介绍 集成电路总线&#xff0c;是一种同步串行半双工通信总线。 总线or协议&#xff1f;&#xff01; 总线是数据传输通道&#xff0c;协议是数据传输规则。 1、1介绍 a、由时钟线SCL和数据线SDA组成&#xff0c;并且都接上拉电阻&#xff0c;确保总线空…

UDP套接字

大家好,又见面了,&#x1f389;&#x1f389;&#x1f389;&#x1f338;&#x1f338;&#x1f338; 今天为大家带来UDP套接字的相关知识 文章目录认识socketUDP和TCP认识UDPAPI有关方法基于UDP实现回显服务器UDP的方法基于UDP实现回显程序认识socket UDP和TCP 认识UDPAPI有…

【数据结构】二叉树的概念及结构

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a; 初阶数据结构 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是…

Linux内核设备驱动设备树概念与使用

一、设备树概念以及作用 1.1设备树概念 设备树(Device Tree)&#xff0c;将这个词分开就是“设备”和“树”&#xff0c;描述设备树的文件叫做 DTS(DeviceTree Source)&#xff0c;这个 DTS 文件采用树形结构描述板级设备&#xff0c;也就是开发板上的设备信息&#xff0c;比…

prometheus基本介绍

001 基本介绍 1.主要功能 多维数据模型&#xff08;时序由metric名字和k/v的labels构成&#xff09;灵活的查询语句无依赖存储&#xff0c;支持local和remote不同的模型采用http协议&#xff0c;使用pull模式&#xff0c;拉取数据&#xff0c;简单易懂监控目标&#xff0c;可…

session,zookeeper,mq-rabbitmq,kafka,websocket

spring-boot-demo-session pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://…

INSERT INTO IF NOT EXISTS问题

情景说明&#xff1a;工作上遇到一个树形结构的数据&#xff0c;如有文件夹和子文件夹这样的数据。由于后端逻辑问题&#xff0c;导致在前端页面操作了删除功能后&#xff0c;数据库中仅部分数据被删除&#xff0c;比如只把根节点或是父节点删除了&#xff0c;没有级联删除所有…

九龙证券|什么是庄家洗盘和出货?各有什么特征?

在股市独占的是庄家&#xff0c;在市场上独占的是商人。庄家的存在便是为了把资金投入市场变成本钱&#xff0c;使用本钱获取最大赢利。庄家的各类方法也是为了不惜一切代价获取最大赢利。今天我们来了解什么是庄家洗盘和出货&#xff1f;各有什么特征&#xff1f;下面就为大家…

所有知识付费都可以用 ChatGPT 再割一次?

伴随春天一起到来的&#xff0c;还有如雨后春笋般冒出的 ChatGPT / AI 相关的付费社群、课程训练营、知识星球等。 ChatGPT 吹来的这股 AI 热潮&#xff0c;这几个月想必大家多多少少都能感受到。 ▲ 图片来源&#xff1a;网络 这两张图是最近在圈子里看到的。 一张是国内各…

SpringBoot —— 日志基本操作

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ SpringBoot —— 日志基本操作一、日志的作用二…

Adobe全家桶功能介绍

Adobe全家桶是一套由Adobe公司开发的创意设计软件集合&#xff0c;包含了许多功能强大的软件&#xff0c;可以帮助用户完成各种创意设计任务。 以下是Adobe全家桶中一些主要软件的功能介绍&#xff1a; Photoshop&#xff1a;用于图像处理和编辑&#xff0c;可以进行图像裁剪…

Gradio介绍

Gradio App 就是给 AI 算法工程师训练的模型赋予分享给大众的能力。 从技术侧拆分&#xff0c;由三个部分组成&#xff1a; 前端页面 后端接口 AI算法模型推理 Gradio 做了一件事情&#xff0c;就是将这三个部分封装到一个 python 接口里&#xff0c;用户通过实现其封装的…

进来拿!最近疯传的154页微软 GPT-4早期实验报告:探究 AGI进化之路(全中文版)

这应该是&#xff0c;最近一段时间以来&#xff0c;关于 ChatGPT4.0剖析最全面的一份报告。 看懂10%&#xff0c;能帮我们对 ChatGPT 的认识&#xff0c;有一个质的跃升&#xff1b; 看懂50%&#xff0c;你将是分享 ChatGPT 知识领域最顶尖的那一拨人。 这份报告证明了 GPT-4…

Prometheus+Mysqld_exporter+Grafana从0到1搭建MySQL的可视化监控

目 录1. 准备工作1.1 安装MySQL1.2 安装Prometheus1.3 安装Mysqld_exporter1.4 安装Grafana2. 更改配置2.1 配置Mysqld_exporter2.2 配置Prometheus2.3 配置Grafana3. 小 结1. 准备工作 安装 MySQL 数据库安装 Prometheus安装 Mysqld_exporter安装 Grafana 在正式开始搭建之前…