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

2024-06-08 1284阅读

🧸欢迎来到dream_ready的博客,📜相信您对博主首页也很感兴趣o (ˉ▽ˉ;)

博主首页,更多redis、java等优质好文以及各种保姆级教程等您挖掘!

目录

一、介绍

二、导入依赖

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

四、设置静态资源映射

五、注意放开拦截器拦截 

六、使用方式

常用注解

标记数据 

Controller

Model 

七、查看演示效果

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


一、介绍

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

官网:https://swagger.io/

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

二、导入依赖

    com.github.xiaoymin
    knife4j-spring-boot-starter
    3.0.2

此处导入的是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接口文档 —— 手把手教学,全方位超详细小白能看懂,百分百能用Java版

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

四、设置静态资源映射

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

也是在配置类中书写哦

下面这个基本是固定的,不用改,若你想玩一下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/**"

类似我这样写:

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

六、使用方式

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

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

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

浏览器输入下面这个地址

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

http://127.0.0.1:8080/doc.html

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

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

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

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

常用注解

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

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

标记数据 

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

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

Controller

原来的:

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

标记后:

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

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

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也要用注解加个标记

原来的:

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

标记后:

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

七、查看演示效果

咱们来发送个请求:

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

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

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

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

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

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

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

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

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

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

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

例如我这里

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

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

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

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

点击添加参数

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

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

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

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

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

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

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]