6.Swagger的实战使用

news/2024/12/29 7:51:15/

六.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 {@Testpublic 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接口前缀Igc.setServiceName("%sService");	//去掉Service接口的首字母I//自增策略gc.setIdType(IdType.AUTO); //主键策略//自动生成接口文档@APIgc.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的生成有关,全部使用@RestControllerstrategy.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分组@Beanpublic 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分组@Beanpublic 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")@TableLogicprivate 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 {@Resourceprivate 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.ppmy.cn/news/42154.html

相关文章

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

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

Leetcode力扣秋招刷题路-0258

从0开始的秋招刷题路&#xff0c;记录下所刷每道题的题解&#xff0c;帮助自己回顾总结 258. 各位相加 给定一个非负整数 num&#xff0c;反复将各个位上的数字相加&#xff0c;直到结果为一位数。返回这个结果。 示例 1: 输入: num 38 输出: 2 解释: 各位相加的过程为&…

java中的SPI机制

文章目录SPI 介绍何谓 SPI?SPI 和 API 有什么区别&#xff1f;实战演示Service Provider InterfaceService Provider效果展示ServiceLoaderServiceLoader 具体实现自己实现一个 ServiceLoader总结在面向对象的设计原则中&#xff0c;一般推荐模块之间基于接口编程&#xff0c;…

ChatGPT本地部署(支持中英文,超级好用)!

今天用了一个超级好用的Chatgpt模型——ChatGLM&#xff0c;可以很方便的本地部署&#xff0c;而且效果嘎嘎好&#xff0c;经测试&#xff0c;效果基本可以平替内测版的文心一言。 目录 一、什么是ChatGLM&#xff1f; 二、本地部署 2.1 模型下载 2.2 模型部署 2.3 模型运…

Leetcode.1971 寻找图中是否存在路径

题目链接 Leetcode.1971 寻找图中是否存在路径 easy 题目描述 有一个具有 n 个顶点的 双向 图&#xff0c;其中每个顶点标记从 0 到 n - 1&#xff08;包含 0 和 n - 1&#xff09;。图中的边用一个二维整数数组 edges 表示&#xff0c;其中 edges[i] [ui, vi]表示顶点 ui和顶…

Baumer工业相机堡盟工业相机如何通过BGAPISDK里的图像处理库进行图像转换(C++)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK进行图像转换&#xff08;C&#xff09;Baumer工业相机Baumer工业相机的SDK里图像格式转换的技术背景Baumer工业相机通过BGAPI SDK进行图像转换调用BGAPI SDK的图像转换库ImageProcessor调用BGAPI SDK建立图像调用BGAPI SDK转换图像…

ARM 编译器 Arm Compiler for Embedded 6 相关工具链简介

目录 1, Introduction to Arm Compiler 6 1.1 armclang 1.2 armasm 1.3 armlink 1.4 armar 1.5 fromelf 1.6 Arm C libraries 1.7 Arm C libraries 1,8 Application development &#xff0c;ARM程序开发流程 2&#xff0c;ARM 编译器 5和ARM 编译器 6的兼容性 3&…

JavaEE企业级应用开发教程——第十二章 Spring MVC数据绑定和相应(黑马程序员第二版)(SSM)

第十二章 Spring MVC数据绑定和相应 12.1 数据绑定 在 Spring MVC 中&#xff0c;当接收到客户端的请求时&#xff0c;会根据请求参数和请求头等信息&#xff0c;将参数以特定的方式转换并绑定到处理器的形参中&#xff0c;这个过程称为数据绑定。数据绑定的流程大致如下&…