Swagger接口文档 —— 手把手教学,全方位超详细小白能看懂,百分百能用Java版

简介: 本文提供了一份详细的Swagger接口文档生成工具的使用教程,包括了导入依赖、配置类设置、资源映射、拦截器配置、Swagger注解使用、生成接口文档、在线调试页面访问以及如何设置全局参数(如token),旨在帮助Java开发者快速上手Swagger。

一、介绍

使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。

官网:https://swagger.io/

Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。

二、导入依赖

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>

此处导入的是Knife4j,这是一个为MVC框架集成Swagger生成文档的解决方案

三、在配置类中加入 knife4j 相关配置

亲爱的朋友,希望你不要告诉我你不会写配置类,不会配置类的话看文末最下面有最基础的配置类**的教程**,保证你能用上最好用的Swagger文档

是在配置类中添加下面内容哦

注意修改里面的一些内容,比如汉字部分以及那个扫描包的路径

    /**
     * 通过knife4j生成接口文档
     * @return
     */
    @Bean
    public Docket docket1() {
        log.info("准备生成接口文档...");
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("皮肤肿瘤分类项目接口文档")
                .version("2.0")
                .description("皮肤肿瘤分类项目接口文档")
                .build();
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .groupName("接口")
                .apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.cvresume.controller"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }

这个扫描包的路径切记要修改哦

需要注意的是,这个方法可以设置多个,来使接口文档分页,只要方法名不重复即可

四、设置静态资源映射

设置静态资源映射,否则接口文档页面无法访问

也是在配置类中书写哦

下面这个基本是固定的,不用改,若你想玩一下Swagger的更多玩法,那么你可以去查阅官方文档

    /**
     * 设置静态资源映射
     * @param registry
     */
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        log.info("开始设置静态资源映射...");
        registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

五、注意放开拦截器拦截

要注意拦截器拦截,比如如果你设置的有JWT校验,那么就要在配置拦截器那里放开下面这几个静态资源

"/swagger-resources/**", "/doc.html", "/webjars/**", "/v2/**", "/swagger-ui.html/**"

类似我这样写:

六、使用方式

其实你已经可以使用了,来进入这个页面看一下吧

当你在写配置的时候,需要指定一个扫描路径,它就会自动扫描所有接口,获取对应的数据,构建接口文档

浏览器输入下面这个地址

注意修改ip和端口号为你正在使用的,其他不变

http://127.0.0.1:8080/doc.html

只不过你会发现它没有备注,当你遇到很麻烦的数据的时候,根本不知道每个属性是干嘛的,这时候就需要使用注解了

利用注解标记Controller和Model层对应的数据,然后利用这些标记的数据自动生成接口文档中对应数据的备注

常用注解

通过注解可以控制生成的接口文档,使接口文档拥有更好的可读性,常用注解如下:

标记数据

现在我对我的login接口进行改造,使其出现在接口文档上

我这里将原来和标记后的代码都进行了展示,主要是看注解,不要看我的逻辑代码,此篇博客只是为了让大家真正上手Swagger的使用

Controller

原来的:

标记后:

可以看到我用@Api标记了UserCroller这个类,用@ApiOperation标记了login这个方法

Model

其实基本项目中的所有Model都要做标记,因为不一定啥时候用到,Model做标记的主要原因是让Swagger知道传来了什么参数(传对象时),或返回了什么参数

原来的:

@Data
public class User {
    private Integer id;
    private String username; // 用户名
    private String password; // 密码
    private String nickname; // 昵称
    private String avatarPath; // 头像路径
    private String sex; // 性别
    private String phone; // 电话
    private Integer role; // 角色
    private String hospital; // 医院名称
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

标记后:

可以看到,我利用了@ApiModel标记实体类,用@ApiModelProperty标记属性

@Data
@ApiModel(description = "用户信息")
public class User {

    @ApiModelProperty(value = "用户ID")
    private Integer id;

    @ApiModelProperty(value = "用户名")
    private String username;

    @ApiModelProperty(value = "密码")
    private String password;

    @ApiModelProperty(value = "昵称")
    private String nickname;

    @ApiModelProperty(value = "头像路径")
    private String avatarPath;

    @ApiModelProperty(value = "性别")
    private String sex;

    @ApiModelProperty(value = "电话")
    private String phone;

    @ApiModelProperty(value = "角色")
    private Integer role;

    @ApiModelProperty(value = "医院名称")
    private String hospital;

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

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

然后因为我这个项目有一个统一返回的对象Result,所以我对Result也要用注解加个标记

原来的:

标记后:

七、查看演示效果

咱们来发送个请求:

点击调试,可以看到,需要传的参数直接给我们了,多么的方便呀

当时,参数值需要我们填哈哈

来我们再看一个,哪怕传来的是对象,他也应对自如

点击调试,我们只需要填写参数值即可

若你想全部都加上备注,就需要辛苦一下啦

说一个小窍门,丢给GPT,然后修改一下即可哈哈哈

八、设置全局都穿传的参数 —— 例如token

例如我这里

手动先发送个请求,获取登陆后的token

将token添加到“全局参数设置”这里

点击添加参数

这个时候你再发送任何请求,都会自动带上这个全局参数了

教程至此结束,这篇教程更适用于新手,Swagger进阶等我有空了会补充,但这篇博客足以满足大部分学习者了

🧸前路漫漫,愿星光与您相伴!

目录
相关文章
|
5月前
|
Java 数据库连接 程序员
从头到尾手把手教你搭建阅读Mybatis源码的环境(程序员必备技能)
从头到尾手把手教你搭建阅读Mybatis源码的环境(程序员必备技能)
171 0
|
移动开发 程序员 编译器
三分钟创建一个新应用,ivx的神奇之处【PPT式程序开发】
IVX是一门人人都能快速掌握的可视化编程语言
93 0
|
Java 数据库 开发工具
小熊学Java全能学习+面试指南网站上线啦!
Java学习手册:should 是最全、阅读最直观的Java全能学习手册,从基础到高级框架篇,有着行业所需的框架组件 面试专栏:结合各位大佬以及自己所学知识,整理了14w字的面试题,从基础到架构设计等 舔砖Java:一看是不是谐音梗,是的,这部分主要是一些能够提升自己视角的文章,拓宽自己的思路 开发必备:这部分涵盖了 安装教程、激活指南、常见问题等专栏 架构设计:自己学习架构设计一些笔记吧
107 1
|
5月前
|
存储 Java
0基础java初学者都能做的打字通小游戏? 内含源码解读和细致讲解!!
0基础java初学者都能做的打字通小游戏? 内含源码解读和细致讲解!!
53 2
0基础java初学者都能做的打字通小游戏? 内含源码解读和细致讲解!!
|
11月前
|
消息中间件 设计模式 分布式计算
大厂招聘重点全在这!GitHub置顶Java基础-高级面试库+自学路线
最近几年经常会听见这样一种声音:“程序员是吃青春饭的,年龄一大就不吃香了”,在当下这种互联网产业增速放缓,甚至隐约展现出疲态的时刻,此类言论就很有市场。
|
12月前
|
域名解析 网络协议 Oracle
Java的第十五篇文章——网络编程(后期再学一遍)
Java的第十五篇文章——网络编程(后期再学一遍)
|
设计模式 XML Java
《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之样板代码(1)
《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之样板代码(1)
235 1
|
Dubbo Java 中间件
《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之样板代码(4)
《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之样板代码(4)
149 0
|
Java 测试技术
《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之样板代码(6)
《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之样板代码(6)
144 0
《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之样板代码(3)
《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之样板代码(3)