欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

十、Spring boot 简单优雅的整合 Swagger2

程序员文章站 2022-06-19 21:11:12
前言 swagger2 是什么,我这里就不说了,就是一个简单的接口文档,方便前后端联调。 其实之前没有想要到要使用swagger 的。因为我之前用的是YAPI ,不过这个是一个单独的工具。并且是开源的,整个团队协作使用起来非常方便。但是这里我们坐个人项目的话,就使用比较简单的swagger2了,我们 ......

前言

swagger2 是什么,我这里就不说了,就是一个简单的接口文档,方便前后端联调。

其实之前没有想要到要使用swagger 的。因为我之前用的是yapi ,不过这个是一个单独的工具。并且是开源的,整个团队协作使用起来非常方便。但是这里我们坐个人项目的话,就使用比较简单的swagger2了,我们在在springboot中使用swagger2 比较简单。

pom.xml

一切从配置开始的,我们映入swagger2 ,需要先引入依赖。如下:

<dependency>
            <groupid>io.springfox</groupid>
            <artifactid>springfox-swagger2</artifactid>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupid>io.springfox</groupid>
            <artifactid>springfox-swagger-ui</artifactid>
            <version>2.9.2</version>
        </dependency>

swaggerconfig

引入依赖后,我们就需要来写一个配置,我们在config 目录下创建一个swaggerconfig类。内容如下:

@configuration
@enableswagger2
public class swaggerconfig {

    @bean
    public docket createrestapi(){
        return new docket(documentationtype.swagger_2)
                .apiinfo(apiinfo())
                .select()
                .apis(requesthandlerselectors.basepackage("com.quellan.zlflovemm.controller"))
                .paths(pathselectors.any())
                .build();
    }

    private apiinfo apiinfo(){
        return  new apiinfobuilder()
                .title("spring boot中使用swagger2构建restful apis")
                .description("springboot整合swagger,详细信息......")
                .version("1.0.0")
                .build();
    }
}

可以看到代码不复杂,就是创建了一个docket 的bean。唯一需要注意的是注意配置好接口的目录。
十、Spring boot 简单优雅的整合 Swagger2

其实到了这一步,我们就已经配置好了。我们启动项目测试一下。启动项目后,在浏览器上输入:

http://localhost:9090/zlflovemm/swagger-ui.html

十、Spring boot 简单优雅的整合 Swagger2

可以看到我们之前写的接口已经在界面上显示出来了。不过现在的接口还惨不忍睹,你们自己实践的时候可以看看,需要我们再做些工作。到这里有些朋友可能会出现问题,发现没有出现这种界面,可能是配置不对,要不就是你们的配置了拦截器。我自己开始弄的时候就出现了页面访问不了的情况。然后发现是我们上篇文章番外中设置的拦截器导致的。我们可以先把注释掉。

接口中的配置

我们就用用户类的接口来写吧,毕竟还是写文档还是很麻烦的。写好后的代码如下:

@slf4j
@restcontroller
@requestmapping("/user")
@api(tags = "用户管理相关接口")
public class usercontroller {

    @autowired
    private userservice userservice;

    @apioperation("获取用户列表")
    @requestmapping(value = "/list")
    public list<userentry> finduserlist(){
        return userservice.finduserlist();
    }


    @apioperation("新增用户信息")
    @apiimplicitparams({
            @apiimplicitparam(name = "username",value = "用户名",defaultvalue = "zlf"),
            @apiimplicitparam(name="password",value = "密码",defaultvalue = "zlf"),
            @apiimplicitparam(name = "email",value = "邮箱",defaultvalue = "11@qq.com")
    })
    @requestmapping(value = "/add",method = requestmethod.get)
    public string adduser(@requestparam(value = "username")string uasername,@requestparam(value = "password")string password,@requestparam(value = "email")string email){
        int falg=userservice.adduser(uasername,password,email);
        if(falg>0){
            return "success";
        }
        return "error";
    }

    @apioperation("删除用户信息")
    @apiimplicitparam(name = "id",value = "1",defaultvalue = "1")
    @requestmapping(value = "/delete",method = requestmethod.get)
    public string deleteuser(@requestparam(value = "id")int id){
        if(userservice.deleteuser(id)>0){
            return "success";
        }
        return "error";
    }


    @apioperation("获取用户列表2")
    @requestmapping(value = "/list2",method = requestmethod.get)
    public list<userentry> finduserlist2(){
        return userservice.finduserlist2();
    }

    @apioperation("新增用户信息2")
    @apiimplicitparams({
            @apiimplicitparam(name = "username",value = "用户名",defaultvalue = "zlf"),
            @apiimplicitparam(name="password",value = "密码",defaultvalue = "zlf"),
            @apiimplicitparam(name = "email",value = "邮箱",defaultvalue = "11@qq.com")
    })
    @requestmapping(value = "/add2",method = requestmethod.get)
    public string adduser2(@requestparam(value = "username")string uasername,@requestparam(value = "password")string password,@requestparam(value = "email")string email){
        int falg= userservice.adduser2(uasername,password,email);
        if(falg>0){
            return "success";
        }
        return "error";
    }

    @apioperation("删除用户信息2")
    @apiimplicitparam(name = "id",value = "1",defaultvalue = "1")
    @requestmapping(value = "/delete2",method = requestmethod.get)
    public string deleteuser2(@requestparam(value = "id")int id){
        if(userservice.deleteuser2(id)>0){
            return "success";
        }
        return "error";
    }
}

在类上加入@api(tags = "用户管理相关接口") 表示这个类的作用。
在单个接口上,我们通过@apioperation,@apiimplicitparams,@apiimplicitparam来写备注了。
@apioperation 用来注明接口的功能。
@apiimplicitparam 用来设置接口有单个参数的,
@apiimplicitparams 用来设置接口多个参数的,怎么使用,代码中有样例。

接下来,我们来看下界面上。
十、Spring boot 简单优雅的整合 Swagger2
十、Spring boot 简单优雅的整合 Swagger2
可以看到,界面上已经可以显示出来了,这比我们刚刚开始没有配置一些注释要友好了很多,点击 execute 可以调试接口,还是可以满足基本需求的。但是大家也同样发现了,swagger 对我们的代码侵入是非常严重的,我们项目中本来代码就很多,我们还要加上这么多的注解代码,对我们写代码是很不友好的。

番外

到此为止,springboot 配置swagger2 就已经实现好了,整体上比较简单,这些希望对大家有帮助。

好了,就说这么多啦
代码上传到github:
https://github.com/quellanan/zlflovemm

后续加油♡

欢迎大家关注个人公众号 "程序员爱酸奶"

分享各种学习资料,包含java,linux,大数据等。资料包含视频文档以及源码,同时分享本人及投递的优质技术博文。

如果大家喜欢记得关注和分享哟❤

十、Spring boot 简单优雅的整合 Swagger2