Springboot学习:API文档构建工具-Swagger2

这篇博客介绍了如何使用Swagger2在SpringBoot项目中创建API文档,包括@Api、@ApiOperation、@ApiImplicitParams、@ApiResponses等常用注解的使用方法,并展示了实际代码示例和文档效果。
摘要由CSDN通过智能技术生成

1. Swagger2常用注解:

@Api

@Api:用在请求的类上,说明该类的作用
    tags=“说明该类的作用”

@Api(tags=“APP用户注册Controller”)

@ApiOperation

@ApiOperation:“用在请求的方法上,说明该方法的作用”
    value=“说明方法的作用”
    notes=“方法的备注说明”

@ApiOperation(value=“用户注册”, notes=“手机号和密码都是必填项,年龄随便填,但必须是数字”)

@ApiImplicitParams

@ApiImplicitParams:用在请求的方法上,包含一组参数说明,方法有多个形参的时候,可以使用此注解,描述每个参数的作用
    @ApiImplicitParam:用在@ApiImplicicParams注解中,指定一个请求参数的配置信息
        name:参数名
        value:参数的汉字说明,解释
        required:参数是否必须传
        paramType:参数放在哪个地方
            header:–请求参数的获取:@RequestHeader
            query:–请求参数的获取:@RequestParam
            path(用户restful接口):–请求参数的获取:@PathVariable
            body(不常用)
            form(不常用)
        dataType:参数类型,默认String
        defaultValue:参数的默认值

@ApiResponses

@ApiResponses: 用于请求的方法上,表示一组响应
    @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
        code:数字,例如400
        message:信息,例如请求参数没填好
        response:抛出异常的类

@ApiModel

@ApiModel:用于响应类上,表示一个返回响应数据的信息(一般用于post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParams注解描述的时候)
    @ApiModelProperty:用在属性上,描述响应类的属性

2. 实际代码使用

创建配置类:

package com.xxxx.springboot.config;

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

@Configuration
@EnableSwagger2
public class Swagger2 {
    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xxxx.springboot.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("用户管理接口API参考文档")
                .version("1.0")
                .build();
    }

}

在Controller中加入注释

本文只在UserController类中加入了文档注释,点击超链接可以查看项目代码。

package com.xxxx.springboot.controller;

import com.github.pagehelper.PageInfo;
import com.xxxx.springboot.exceptions.ParamsException;
import com.xxxx.springboot.model.ResultInfo;
import com.xxxx.springboot.query.UserQuery;
import com.xxxx.springboot.service.UserService;
import com.xxxx.springboot.vo.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;


@RestController
@Api(tags = "用户模块管理")
public class UserController {
    @Resource
    private UserService userService;

    @GetMapping("/user/username/{userName}")
    @ApiOperation(value = "用户模块-根据UserName查询用户记录",notes = "可以不加")
    @ApiImplicitParam(name = "userName", value = "查询需要的参数,用户名", required = true, paramType = "path")
    public User queryUserByUserName(@PathVariable String userName){
         return userService.queryUserByUserName(userName);
    }

    @GetMapping("/user/uid/{userId}")
    @ApiOperation(value = "用户模块-根据UserId查询用户记录",notes = "可以不加")
    public User queryUserByUserId(@PathVariable Integer userId){
        return userService.queryById(userId);
    }


    @GetMapping("/user/list")
    @ApiOperation(value = "用户模块-用户列表查询",notes = "可以不加")
    public PageInfo<User> queryUserByParams(UserQuery userQuery){
        return userService.queryUsersByParams(userQuery);
    }

    @PutMapping("/user")
    @ApiOperation(value = "用户的添加",notes = "可以不加")
    public ResultInfo saveUser(@RequestBody User user){
        ResultInfo resultInfo = new ResultInfo();
        try {
            userService.save(user);
        } catch (ParamsException e) {
            resultInfo.setCode(e.getCode());
            resultInfo.setMsg(e.getMsg());
            e.printStackTrace();
        }
        catch (Exception e){
            resultInfo.setMsg("用户添加失败");
            resultInfo.setCode(300);
            e.printStackTrace();
        }
        return resultInfo;
    }

    @PostMapping("/user")
    @ApiOperation(value = "用户模块-用户更新",notes = "可以不加")
    public ResultInfo updateUser(@RequestBody User user){
        ResultInfo resultInfo = new ResultInfo();
        try {
            userService.update(user);
        } catch (ParamsException e) {
            resultInfo.setCode(e.getCode());
            resultInfo.setMsg(e.getMsg());
            e.printStackTrace();
        }
        catch (Exception e){
            resultInfo.setMsg("用户更新失败");
            resultInfo.setCode(300);
            e.printStackTrace();
        }
        return resultInfo;
    }

    @DeleteMapping("/user/{userId}")
    @ApiOperation(value = "用户模块-用户删除",notes = "可以不加")
    public ResultInfo deleteUser(@PathVariable Integer userId){
        ResultInfo resultInfo = new ResultInfo();
        try {
            userService.delete(userId);
        } catch (ParamsException e) {
            resultInfo.setCode(e.getCode());
            resultInfo.setMsg(e.getMsg());
            e.printStackTrace();
        }
        catch (Exception e){
            resultInfo.setMsg("用户删除失败");
            resultInfo.setCode(300);
            e.printStackTrace();
        }
        return resultInfo;
    }

}

在Model中加入注释

本文只在User类中加入了文档注释,点击超链接可以查看项目代码。

package com.xxxx.springboot.vo;

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

@ApiModel(description = "用户实体对象")

public class User {
    @ApiModelProperty(value = "用户的id,主键")
    private Integer id;
    @ApiModelProperty(value = "用户的名称")
    private String userName;
    @ApiModelProperty(value = "用户密码")
    private String userPwd;

实际文档效果

默认文档地址为:http://localhost:8080/swagger-ui.html

UserController效果图为:

在这里插入图片描述
其中,queryUserByUserName方法详细页面为:
在这里插入图片描述
点击try it out 可以实时测试接口
在这里插入图片描述

User效果图为

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值