springboot学习笔记(十一)—— springboot使用swagger2构建Restful API

前言:

        快~快~快元旦咯,一年又过去了,似乎这两三个月都不怎么写博客了。今天先补一篇,后面找假期把最近这段时间的东西都整合起来吧~来场大爆发!

        废话不说了,今天来学习一下springboot使用swagger2构建Restful API学习,学习一下如何使用swagger来构建自己的API文档。

 

准备工作:先加入maven依赖

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.8.0</version>
</dependency>

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.8.0</version>
</dependency>

直接上代码:

        一、首先要写一个配置文件,如下:

           注意:该配置文件放置位置一定要和启动类在同一目录下,如图:        

                                      

package com.wen.gentle;



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.builders.RequestHandlerSelectors;

import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Gentle
 */
@Configuration
@EnableSwagger2
public class Swagger2 {
//swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
    @Bean
    public Docket createRestApi() {
        List<Parameter> pars = new ArrayList<Parameter>();

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .globalOperationParameters(pars)
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.wen.gentle"))
                .paths(PathSelectors.any())
                .build();
    }
    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //页面标题
                .title("Spring Boot 测试使用 Swagger2 构建RESTful API")
                //创建人
                .contact(new Contact("Gentle", "localhost:8080", "hh@qq.com"))
                //版本号
                .version("1.0")
                //描述
                .description("API 描述")
                .build();
    }
 
 
}

   

         二、开始构建我们的文档啦

package com.wen.gentle.controller;

import com.wen.gentle.vo.Users;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;

/**
 * @Description:
 * @Author: Gentle
 * @date 2018/12/29 10:25
 */
@RestController
@Api(tags="用户管理",description = "这是一个用户的控制器")
public class UserController {
    @ApiOperation(value = "用户管理",notes = "用户操作",httpMethod ="POST")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "name" ,value = "用户名字",required = true,dataType = "String"),
            @ApiImplicitParam(name = "age" ,value = "用户年龄",dataType = "int",required = true),
            @ApiImplicitParam(name = "time" ,value = "用户时间",required = true,dataType = "date"),
    })
    //api返回的东西
    @ApiResponses({
            //返回的东西,有返回码和信息,可以自定义
            @ApiResponse(code = 200,message = "success",response = Users.class),
            @ApiResponse(code = 403,message = "不支持的请求"),
            @ApiResponse(code = 404,message = "找不到资源"),
            //自定义返回码
            @ApiResponse(code = -99,message = "未知异常",response = Exception.class),

    })
    @PostMapping(value = "getUsersInfo")
    public Users getUsersInfo(Users users) {
        //将信息直接返回
        return users;
    }

    @ApiIgnore  //这个注解标志不用显示出来
    @PostMapping(value = "test")
    public String query(){


        return "该方法不显示";
    }



}

       model类:

package com.wen.gentle.vo;

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

import java.util.Date;

/**
 * @Description:
 * @Author: Gentle
 * @date 2018/12/29 10:26
 */
@ApiModel(value="users", description="用户对象")
@Data
public class Users {
    @ApiModelProperty(value="用户名字",dataType = "String" ,name = "name",example = "Gentle")
    private String name;
    @ApiModelProperty(value = "用户年龄",dataType = "int",name = "age",example = "100")
    private Integer age;
    @ApiModelProperty(value = "时间",dataType = "date",name = "time",example = "2018-12-29")
    private Date time;

}

 

 

    三、注解释义。

         这一步可以先不了解,先去第四步实现出来再回来学习。

         这时候要说说注解的作用了(附图演示)

         首先说说这个@Api()

         例子:@Api(tags="用户管理",description = "这是一个用户的控制器") 告诉说这是一个swagger资源啦。

          targs属性的意思是展示这个类的标题

          description属性是描述这个类是做什么的

      如下图:

                 

        注解:@ApiOperation()

        例子:@ApiOperation(value = "用户管理",notes = "用户操作")

          value属性:是意思可以理解为描述这个接口的作用

          notes属性:简单说理解为注释吧,笔记也可以,不知道怎么解释

     如图:

                     

 

              注解:@ApiImplicitParams() 这个意思是多个请求参数,就是包含下面的@ApiImplicitParam()注解。

                          @ApiImplicitParam()   一个请求参数

             例子:

@ApiImplicitParams({
        @ApiImplicitParam(name = "name" ,value = "用户名字",required = true,dataType = "String"),
        @ApiImplicitParam(name = "age" ,value = "用户年龄",dataType = "int",required = true),
        @ApiImplicitParam(name = "time" ,value = "用户时间",required = true,dataType = "date"),
})

              常用属性:

              name属性:请求参数的名字

              value属性:标识请求参数是什么意思

              requird属性:是否一定需要这个参数,默认为false

             dataType属性:请求参数的数据类型 。注意没有写Integer类型的话,在展示会显示引用类型,正确直接写int就好

       例图:  

            注解: @ApiResponses({})   api返回多种类型数据

                        @ApiResponse()  返回的具体数据,可以是List,String等数据类型,状态码,信息等

           例子:

@ApiResponses({
        //返回的东西,有返回码和信息,可以自定义
        @ApiResponse(code = 200,message = "success",response = Users.class),
        @ApiResponse(code = 403,message = "不支持的请求"),
        @ApiResponse(code = 404,message = "找不到资源"),
        //自定义返回码
        @ApiResponse(code = -99,message = "未知异常",response = Exception.class),
})

           常用属性:

               code属性:状态码,可以常用的200,302,403,502等,也可以自定义

               message属性:返回错误信息,或者正确信息

               response属性:返回的对象,指定返回的对象。

          例图:

                            

 

            常用API注解就这样啦,还有model的注解,这里就不做介绍了。还有一些不常用的注解,例如:@ApiIgnore 当留下的坑吧,百度学习去。

      

      四、启动程序

          程序启动后,访问:http://localhost:8080/swagger-ui.html  即可可看到刚刚编写的东西。

 

          OJBK,swagger文档基本入门啦。

 

总结:

        swagger文档基本学习到这里结束啦,总体来说这个文档框架简单上手吧!毕竟都是编写java代码,可能个人原因吧,不太喜欢这个框架。原因有二:

        一:无端端增加代码量,写这个也是一个累人的事。

        二:和前端开发人员要和你拼命,这个他们可能看不到呀。别说,最近和前端大佬的合作就出了这个问题,就算是感觉上说的很明白,其实还是模糊的。个人感觉还是使用一些开源的API文档合适。

        不管啦,反正能用就行,适当学学编写也是可以的。

         最后谢谢大家的观看。

 

程序人生,与君共勉~!

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值