swagger2使用方法

swagger2是拿来干嘛的?

  • 当然是接口测试啦😒😒

相对于postman而言,如果不需要保存测试参数的话,swagger2也是不错的选择

  • 别废话,快进正题

首先添加依赖

  • 版本自己选择就行
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.4.0</version>
    </dependency>
    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.4.0</version>
    </dependency>

新建文件Swagger2.java

  • 注意要声明成configuation,并且使用注解@EnableSwagger2来打开swagger2
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    @Configuration
    @EnableSwagger2
    public class Swagger2 {
    /**
    * @Description:swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
    */
    @Bean
    public Docket createRestApi() {

    // 为swagger添加header参数可供输入
    // ParameterBuilder userTokenHeader = new ParameterBuilder();
    // ParameterBuilder userIdHeader = new ParameterBuilder();
    // List<Parameter> pars = new ArrayList<Parameter>();
    // userTokenHeader.name("headerUserToken").description("userToken")
    // .modelRef(new ModelRef("string")).parameterType("header")
    // .required(false).build();
    // userIdHeader.name("headerUserId").description("userId")
    // .modelRef(new ModelRef("string")).parameterType("header")
    // .required(false).build();
    // pars.add(userTokenHeader.build());
    // pars.add(userIdHeader.build());

    return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
    .apis(RequestHandlerSelectors.basePackage("com.why.api.controller"))
    .paths(PathSelectors.any()).build();
    // .globalOperationParameters(pars);
    }

    /**
    * @Description: 构建 api文档的信息
    */
    private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
    // 设置页面标题
    .title("使用swagger2构建api接口文档")
    // 设置联系人
    .contact(new Contact("why", "https://www.github.com/wsilencelight", "wsilencelight@gmail.com"))
    // 描述
    .description("这是接口文档")
    // 定义版本号
    .version("1.0").build();
    }
    }

在接口上用注解进行声明

  • 使用@Api,ApiOperation等
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    @Api(value = "用户注册登录的接口", tags = {"注册登陆controller"})
    public class RegisterLoginController {

    @Autowired
    private UserService userService;

    @Value("${wx.appid}")
    private String appid;

    @Value("${wx.appsecret}")
    private String appsecret;

    @PostMapping("/register")
    // value和notes是展示在页面上的
    @ApiOperation(value = "注册", notes = "用户注册接口")
    public JSONResult userRegister (@RequestBody Users user) throws Exception {
    // 1.判断用户名密码不为空
    // 2.用户名是否存在re
    // 3.保存用户
    if (StringUtils.isBlank(user.getUsername()) || StringUtils.isBlank(user.getPassword())) {
    return JSONResult.errorMsg("用户名密码不能为空");
    } else if (userService.queryUsernameIsExist(user.getUsername())) {
    // return JSONResult.ok(user);
    return JSONResult.errorMsg(("用户名已存在"));
    } else {
    user.setNickname(user.getUsername());
    user.setPassword(MD5Utils.getMD5Str(user.getPassword()));
    user.setFansCounts(0);
    user.setReceiveLikeCounts(0);
    user.setFollowCounts(0);
    userService.saveUser(user);
    return JSONResult.ok();
    }

    }
    }

在页面中进行调试

  • 打开localhost:port/swagger-ui.html,和postman相比就是无法存储之前测试的数据,只能给出一些example,但是这样以文档形式显示接口利于测试与前端的工作
    图1
求打赏