swagger的使用与步骤

news2025/2/26 5:56:07

1、导入maven工程

首先我们创建一个 Spring Boot 项目,并引入 Swagger3 的核心依赖包,如下:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

2、核心配置

接下来我们在启动类上添加两个注解,开启Swagger功能。

//开启swagger
@EnableSwagger2
@EnableOpenApi
@SpringBootApplication
public class SwaggerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SwaggerApplication.class, args);
    }

}

3、启动项目

接下来让我们可以启动项目,然后在浏览器中输入如下地址:

http://localhost:8085/swagger-ui/index.html

注意,端口是自己tomcat启动时的端口,以自己电脑的为准

4、进入界面

5、swagger配置类

package com.swagger.config;

import io.swagger.annotations.Api;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).groupName("用户组")
            .select() .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
            .paths(PathSelectors.ant("/swagger/**"))
            .build();
    }
    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
            .title("Api接口文档")
            .description("API描述")
            .version("1.0") .termsOfServiceUrl("https://www.baidu.com") .build(); }


}

6、Controller接口配置

@Api(tags = "用户控制")代表对这个controller的描述

@ApiOperation(value = "查询所有用户", notes = "查询所有用户信息")代表对接口的描述

package com.swagger.controller;

import com.baomidou.mybatisplus.extension.api.R;
import com.swagger.domain.User;
import com.swagger.service.impl.UserServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Api(tags = "用户控制")
@RestController
@RequestMapping("/swagger/user")
@CrossOrigin
@Slf4j
public class UserController {
    @Autowired
    private UserServiceImpl userService;
    @GetMapping("/selectAll")
    @ResponseBody
    @ApiOperation(value = "查询所有用户", notes = "查询所有用户信息")
    public R selectAll(){
        List<User> list = userService.list();
        System.out.println(list);
        return R.ok(list).setCode(200);
    }
    @PostMapping("/save")
    @ApiOperation(value = "新增用户", notes = "新增用户信息")
    public R save(@RequestBody User user){
        return R.ok("success").setCode(200);
    }

    @PutMapping("/update")
    @ApiOperation(value = "修改用户", notes = "修改用户信息")
    public R update(@RequestBody User user){
        return R.ok("success").setCode(200);
    }

    @DeleteMapping("/delete")
    @ApiOperation(value = "删除用户", notes = "删除用户信息")
    public R delete(int id){
        return R.ok("success").setCode(200);
    }

}

7、实体类配置

@ApiModel属性:description:用于描述实体类

@ApiModel(value = "用户实体",description = "用户实体")

@ApiModelProperty属性:notes:描述该实体类属性的信息

@ApiModelProperty(notes = "用户Id")

代码演示

package com.swagger.domain;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.util.Date;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 用户
 * @TableName pd_auth_user
 */
@TableName(value ="pd_auth_user")
@Data
@ApiModel(value = "用户实体",description = "用户实体")
public class User implements Serializable {
    /**
     * ID
     */
    @ApiModelProperty(notes = "用户Id")
    @TableId(value = "id")
    private Long id;

    /**
     * 账号
     */
    @ApiModelProperty(notes = "账号")
    @TableField(value = "account")
    private String account;

    /**
     * 姓名
     */
    @ApiModelProperty(notes = "姓名")
    @TableField(value = "name")
    private String name;

    /**
     * 组织ID
#c_core_org
     */
    @ApiModelProperty(notes = "组织ID")
    @TableField(value = "org_id")
    private Long org_id;

    /**
     * 岗位ID
#c_core_station
     */
    @ApiModelProperty(notes = "岗位ID")
    @TableField(value = "station_id")
    private Long station_id;

    /**
     * 邮箱
     */
    @ApiModelProperty(notes = "邮箱")
    @TableField(value = "email")
    private String email;

    /**
     * 手机
     */
    @ApiModelProperty(notes = "手机")
    @TableField(value = "mobile")
    private String mobile;

    /**
     * 性别
#Sex{W:女;M:男;N:未知}
     */
    @ApiModelProperty(notes = "性别   W:女;M:男;N:未知")
    @TableField(value = "sex")
    private String sex;

    /**
     * 启用状态 1启用 0禁用
     */
    @ApiModelProperty(notes = "启用状态 1启用 0禁用")
    @TableField(value = "status")
    private Boolean status;

    /**
     * 头像
     */
    @ApiModelProperty(notes = "头像")
    @TableField(value = "avatar")
    private String avatar;

    /**
     * 工作描述
比如:  市长、管理员、局长等等   用于登陆展示
     */
    @ApiModelProperty(notes = "工作描述\n" +
        "比如:  市长、管理员、局长等等   用于登陆展示")
    @TableField(value = "work_describe")
    private String work_describe;

    /**
     * 最后一次输错密码时间
     */
    @ApiModelProperty(notes = "最后一次输错密码时间")
    @TableField(value = "password_error_last_time")
    private Date password_error_last_time;

    /**
     * 密码错误次数
     */
    @ApiModelProperty(notes = "密码错误次数")
    @TableField(value = "password_error_num")
    private Integer password_error_num;

    /**
     * 密码过期时间
     */
    @ApiModelProperty(notes = "密码过期时间")
    @TableField(value = "password_expire_time")
    private Date password_expire_time;

    /**
     * 密码
     */
    @ApiModelProperty(notes = "密码")
    @TableField(value = "password")
    private String password;

    /**
     * 最后登录时间
     */
    @ApiModelProperty(notes = "最后登录时间")
    @TableField(value = "last_login_time")
    private Date last_login_time;

    /**
     * 创建人id
     */
    @ApiModelProperty(notes = "创建人id")
    @TableField(value = "create_user")
    private Long create_user;

    /**
     * 创建时间
     */
    @ApiModelProperty(notes = "创建时间")
    @TableField(value = "create_time",fill = FieldFill.INSERT)
    private Date create_time;

    /**
     * 更新人id
     */
    @ApiModelProperty(notes = "更新人id")
    @TableField(value = "update_user")
    private Long update_user;

    /**
     * 更新时间
     */
    @ApiModelProperty(notes = "更新时间")
    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    private Date update_time;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}

swagger显示

8、注解

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

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

相关文章

2022年度游戏本行业数据报告:十大热门品牌销量排行榜

2022年游戏本市场的总体局面是&#xff1a;产品竞争极为激烈&#xff0c;同时又各具特色卖点。今年的游戏本市场&#xff0c;市场格局并未有较大的变化&#xff0c;但是新技术、新产品层出不穷&#xff0c;各个游戏本厂商们通过不断创新、提升产品性能&#xff0c;推出了体验感…

高等数学(第七版)同济大学 习题11-5 个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题11-5 函数作图软件&#xff1a;Mathematica 1.按对坐标的曲面积分的定义证明公式∬Σ[P1(x,y,z)P2(x,y,z)]dydz∬ΣP1(x,y,z)dydz∬ΣP2(x,y,z)dydz.\begin{aligned}&1. \ 按对坐标的曲面积分的定义证明公式\\\\&…

【javascript】有计算功能的简易计算器

外观不满意&#xff0c;可以自行修改。 主要用到的有&#xff1a;grid布局 js原生 阿里字体图标 eval函数 eval() 函数计算 JavaScript 字符串&#xff0c;并把它作为脚本代码来执行。 如果参数是一个表达式&#xff0c;eval() 函数将执行表达式。如果参数是Javascript语句&a…

Vmware 16 安装 Anolis 8.6

Vmware 安装 Anolis一.Anoliso镜像下载二.Vmware虚拟机安装Anolisos1.新建自定义2.稍后安装操作系统3.选择系统4.设置虚拟机名称和安装位置5.按需修改磁盘大小6.最后点击完成即可7.编辑虚拟机设置8.选择镜像8.开启虚拟机9.安装10.设置root密码并开始安装11.完成后重启12.登录三…

Mysql底层原理与性能调优

在工作中&#xff0c;公司就线上生产环节&#xff0c;有没有时常碰到过一些慢SQL查询&#xff0c;那我相信大多时候第一时间想到的优化策略&#xff0c;我相信肯定就是索引&#xff0c;可能第一时间就会想到&#xff0c;看一下SQL是不是有加合适的索引&#xff0c;它的条件里面…

1.3 认识程序开发

文章目录1.程序开发流程1.1 软件定义期&#xff08;研究分析阶段&#xff09;1.2 软件开发期&#xff08;开发阶段&#xff09;1.3 软件上线期&#xff08;部署运行阶段&#xff09;2.认识浏览器2.1 浏览器如何实现访问网站的&#xff1f;2.2 HTTP协议2.3 URL地址的构成2.4 如何…

C++/Qt 小知识记录2

工作中遇到的一些小问题&#xff0c;总结的小知识记录&#xff1a;C/Qt 小知识RGBA/ARGB转16进制颜色int与RGB互转int转Hex值VS2015代码粗略统计QTableWidget设置列宽设置整行选中Item设置可选中但不可编辑C std路径相关操作文件写出绝对路径转为相对路径字符替换打印出GBK的平…

OAuth 2.0(四):手把手带你写代码接入 OAuth 2.0 授权服务

一、业务背景 近期团队帮银行做了一个互动营销活动&#xff0c;活动入口在行方的 App 上&#xff0c;当用户在行方 App 点击活动 banner 页跳转活动的时候参与。 在进活动之前作为业务方自然需要知道参与活动的人是谁&#xff0c;如何给它构建登录态。 这就是为什么橘长这边需…

Node.js--》详解express中的身份认证

目录 Web开发模式 身份认证 Session认证机制 在Express中使用Session认证 JWT认证机制 在Express中使用JWT Web开发模式 目前主流的Web开发模式有两种&#xff1a; 基于服务端渲染的传统Web开发模式 服务端渲染的概念&#xff1a;服务器发送给客户端的HTML页面&#x…

【JavaEE】进入Web开发的世界-CSS

目录 一、CSS的基本规则 二、HTML中如何引入CSS规则&#xff08;html资源如何和css资源产生联系&#xff09; 三、选择器&#xff08;selector&#xff09;规则 3.1各种选择器 3.2普通选择器使用 3.3选择器之间的优先级规则(即覆盖规则) 3.4进一步的选择器规则 3.5伪类…

测试必会 Docker 实战(一):掌握高频命令,夯实内功基础

在 Dokcer 横空出世之前&#xff0c;应用打包一直是大部分研发团队的痛点。在工作中&#xff0c;面对多种服务&#xff0c;多个服务器&#xff0c;以及多种环境&#xff0c;如果还继续用传统的方式打包部署&#xff0c;会浪费大量时间精力。在 Docker 出现后&#xff0c;它以更…

Java设计模式-外观模式Facade

介绍 外观模式&#xff08;Facade&#xff09;&#xff0c;也叫“过程模式&#xff1a;外观模式为子系统中的一组接口提供一个一致的界面&#xff0c;此模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用外观模式通过定义一个一致的接口&#xff0c;用以…

回溯法--n皇后问题

回溯法有两个模板--子集树、排列树&#xff0c;他们有回溯法的共同特点&#xff1a;深度优先搜索&#xff0c;如果一条路走不通&#xff0c;再退回来&#xff08;类似递归&#xff09;问题描述八皇后问题的历史八皇后问题最早是由国际象棋棋手马克斯贝瑟尔&#xff08;Max Bezz…

常用的字符串与内存操作函数(2)

Tips 1. 2. strerror() 1. C语言的库函数在运行的时候&#xff0c;如果发生错误&#xff0c;就会将错误码存在一个变量里面。这个变量就是&#xff1a;errno&#xff08;全局变量&#xff09;。 2. 这个函数的功能在于把错误码转化为对应的错误信息&#xff0c;错误信息…

macOS 13.2 开发者预览版 Beta2(22D5038i)发布

黑果魏叔 1 月 11 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.2 开发者预览版 Beta 2 更新&#xff08;内部版本号&#xff1a;22D5038i&#xff09;&#xff0c;本次更新距离上次发布隔了 27 天。macOS Ventura 带来了台前调度、连续互通相机、FaceTime 通话接…

纯CSS输入区域下划线

使用纯CSS实现文本输入的下划线&#xff0c;简洁有效&#xff0c;实现效果&#xff1a; 实现方式 实现方式也很简单&#xff1a; background: linear-gradient(#999 1px, transparent 0) 0 -1px/100% 2em; 例子代码&#xff1a; <!DOCTYPE html> <html lang"e…

【C语言航路】第十站:指针(三)深刻理解指针运算

目录 一、深刻理解指针和数组 1.一维数组 2、字符数组 &#xff08;1&#xff09;字符变量存放到数组中 &#xff08;2&#xff09;字符串存放到字符数组 &#xff08;3&#xff09; 字符串存放到一个指针中 3.二维数组 二、指针与数组经典笔试题 1.题1 2.题2 3.题3…

MCU-51:单片机之红外遥控(外部中断)

目录一、红外遥控简介二、硬件电路三、基本发送与接收四、NEC码五、代码演示5.1 红外遥控5.2 红外遥控电机调速注意&#xff1a;一定要看一、红外遥控简介 红外发射装置 也就是通常我们说的红外遥控器是由键盘电路、红外编码电路、电源电路和红外发射电路组成。红外发射电路的…

爬虫逆向之字体反爬(一)、镀金的天空-字体反爬-1

题目地址&#xff1a;http://www.glidedsky.com/level/crawler-font-puzzle-1 写一下之前处理过的几个字体反爬实战&#xff0c;也是很常见的一种反爬类型&#xff0c;这是第一篇 先来看一下题目 源码拿到的数字&#xff0c;和实际显示在网页的数字&#xff0c;明显不一样的 …

相见恨晚的 IDEA 使用技巧,能让你的代码飞起来

Live Templates 是什么&#xff0c;听上去感觉挺玄乎的。有的同学用过之后觉得简直太好用了&#xff0c;不能说大大提高了开发效率吧&#xff0c;至少也是小小的提高一下&#xff0c;节省了很多敲重复代码的时间。有的同学用过之后说&#xff1a;没什么用&#xff0c;奇技淫巧罢…