SpringBoot系列(五)SpringBoot 集成 Swagger2 生成接口文档

程序员最头疼的事是什么呢?我想一定是写接口文档,尤其是一大堆参数的那种。那么我们有没有办法改变这种情况呢?答案是肯定的。因此我们的主角 Swagger 登场了。

引入Swagger依赖包

创建springboot web 项目,引入以下依赖

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

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

创建 Swagger 配置类并开启注解

这里有两点要注意的地方:

  1. 一定要开启 @EnableSwagger2 注解
  2. 配置正确的扫描路径

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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 1. Created by pengq on 2019/9/3 9:20.
 */
@Configuration
@EnableSwagger2
public class Swagger2Config {
    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //swagger 的扫描路径,这里指的是生成该路径下所以类的文档
                .apis(RequestHandlerSelectors.basePackage("pengq.springboot.mybatisplus.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("SpringBoot2 集成 Swagger")
                .description("swagger 学习总结")
                .contact(new Contact("pengq","","pengq0717@qq.com"))
                .version("1.0")
                .build();
    }
}

在Controller 中配置 Swagger 注解

  1. 首先需要在我们的controller类上打上 @Api 注解
  2. 编写方法体上的描述信息,这里列举了几种常见的Controller编写方式,如果不全面欢迎大家补充。

示例1:无参数的接口

    @ApiOperation("查询所有用户")
    @ApiResponses({
            @ApiResponse(code = 200, message = "操作成功", response = Users.class),
            @ApiResponse(code = 500, message = "服务器内部异常")
    })
    @GetMapping(value = "/v1/users/", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public Object getAllUser() {
        return userService.listUser();
    }

示例2:有参数 用 @RequestBody 接收

    @ApiOperation("用户注册")
    @PostMapping(value = "/v1/users/register", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public Object register(@RequestBody Users users) {
        return userService.register(users);
    }

示例3:参数 用 @PathVariable 接收

    @ApiOperation("查询用户详情")
    @ApiImplicitParam(paramType = "path", name = "id")
    @GetMapping(value = "/v1/users/{id}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public Object getUserInfo(@PathVariable("id") Integer id) {
        return userService.getUserById(id);
    }

示例4:多参数 用 @RequestParam 接收

	@ApiOperation("用户登录")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "username", value = "登录名",required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "password", value = "登录密码",required = true)
    })
    @PostMapping(value = "/v1/users/login", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public Object login(@RequestParam(name = "username") String username,
                        @RequestParam(name = "password") String password) {
        return userService.login(username, password);
    }

示例5:参数 用 @RequestHeader 接收

	@ApiOperation("header 测试")
    @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "token")
    @PostMapping(value = "/v1/users/check", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public Object check(@RequestHeader("token") String token) {
        return token;
    }

好,到此我们的swagger配置已经完成了,启动我们的项目,感受一下他的强大吧
访问url: http://localhost:8080/swagger-ui.html
这个就是swagger的web界面,该url的访问规则为 http://ip:端口号/swagger-ui.html
在这里插入图片描述

Swagger 常用注解总结

注解属性使用方式描述
@Api@Api(value = "xx", tags = "xx",hidden = false)
value字符串url的路径值
tags字符串对controller的描述,如果设置这个值、value的值会被覆盖
hiddenboolean如果设置为true,该文档将会被隐藏
@ApiOperation@ApiOperation("xxx")
value字符串用在方法头上,作为方法的描述
@ApiImplicitParams@ApiImplicitParams({@ApiImplicitParam(xxx)})
数组@ApiImplicitParam用在方法头上,作为方法参数的描述
@ApiImplicitParam@ApiImplicitParam(paramType = "query", dataType = "String", name = "xxx", value = "xxx")
name字符串与参数名对应
value字符串参数名的描述
requiredbooleantrue/false 是否必须
dataType字符串参数类型
paramType字符串参数请求方式:query/path/header/body
query对应@RequestParam传递
path对应@PathVariable传递
header对应@RequestHeader传递
body不推荐使用,与 @RequestBody标签一起会导致错误
defaultValue字符串参数不传递时的默认值
@ApiResponses@ApiResponses({@ApiResponse()})
数组@ApiResponse用在方法头上,作为方法返回值的描述
@ApiResponse@ApiResponse(code = 200, message = "操作成功", response = Users.class)
code整形返回值编码
message字符串返回值的描述信息
responseClass返回值类型

Swagger集成项目地址:Swagger集成项目地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值