SpringBoot整合系列-整合Swagger2

时间:2022-06-24 03:33:36

原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9959844.html

SpringBoot整合Swagger2

步骤

第一步:添加必要的依赖

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

第二步:添加必要的配置

一般无配置项,必要时可以添加自定义配置项,在配置类中读取

第三步:添加配置类(重点)

// swagger2的配置内容仅仅就是需要创建一个Docket实例
@Configuration
@EnableSwagger2 //启用swagger2
public class Swagger2Config {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .pathMapping("/")
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.springbootdemo"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("springboordemo")
                .description("Springboot整合Demo")
                .version("0.0.1")
                .build(); // 这部分信息其实可以自定义到配置文件中读取
    }
}

通过@Configuration注解,让Spring-boot来加载该类配置。再通过@EnableSwagger2注解来启用Swagger2Config。
再通过createRestApi方法创建Docket的Bean之后,
apiInfo方法用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。
select() 函数返回一个 ApiSelectorBuilder 实例用来控制哪些接口暴露给Swagger2来展现。
一般采用指定扫描的包路径来定义
Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore指定的请求)

第四步:在Controller和Bean上添加Swagger注解

@RestController
@RequestMapping("/user")
@Log4j2
@Api(description = "用户接口")
public class UserApi {

    @Autowired
    private UserService service;

    @ApiOperation(value = "添加用户", notes = "根据给定的用户信息添加一个新用户",response = ResponseEntity.class,httpMethod = "PATCH")
    @RequestMapping(value = "/addUser",method = RequestMethod.PATCH)
    public ResponseEntity<User> addUser(final User user) {
        log.info("执行添加用户操作");
        return service.addUser(user);
    }

    @ApiOperation(value = "更新用户状态", notes = "根据给定的用户ID修改用户状态",response = ResponseEntity.class,httpMethod = "POST")
    @RequestMapping(value = "/updateUser", method = RequestMethod.POST)
    public ResponseEntity<User> updateUser(final UseState useState, int useId) {
        log.info("执行修改用户状态操作");
        return service.updateUser(User.builder().useState(useState).useId(useId).build());
    }

    @ApiOperation(value = "更新用户手机号", notes = "根据给定的用户ID修改用户手机号",response = ResponseEntity.class,httpMethod = "POST")
    @RequestMapping(value = "/updateUsePhoneNum", method = RequestMethod.POST)
    public ResponseEntity<User> updateUsePhoneNum(final String usePhoneNum, int useId) {
        log.info("执行修改用户手机号操作");
        return service.updateUsePhoneNum(User.builder().usePhoneNum(usePhoneNum).useId(useId).build());
    }

    @ApiOperation(value = "删除用户", notes = "根据给定的用户ID删除一个用户",response = ResponseEntity.class,httpMethod = "DELETE")
    @RequestMapping(value = "/deleteUser", method = RequestMethod.DELETE)
    public ResponseEntity<User> deleteUser(final int useId) {
        log.info("执行删除用户操作");
        return service.deleteUser(useId);
    }

    @ApiOperation(value = "查询用户", notes = "根据给定的用户ID获取一个用户",response = ResponseEntity.class,httpMethod = "GET")
    @RequestMapping(value = "getUser", method = RequestMethod.GET)
    public ResponseEntity<User> getUser(final int useId) {
        log.info("执行查询单个用户操作");
        return service.getUser(useId);
    }

    @ApiOperation(value = "查询用户", notes = "根据给定的用户信息查询用户",response = ResponseEntity.class,httpMethod = "POST")
    @RequestMapping(value = "getUsers", method = RequestMethod.POST)
    public ResponseEntity<List<User>> getUsers(final User user) {
        log.info("根据条件查询用户");
        return service.getUsers(user);
    }

}
@ApiModel(value = "用户模型")
public class User {
    @ApiModelProperty("用户ID")
    private int useId;
    @ApiModelProperty("用户姓名")
    private String useName;
    @ApiModelProperty("用户性别")
    private UseSex useSex;
    @ApiModelProperty("用户年龄")
    private int useAge;
    @ApiModelProperty("用户身份证号")
    private String useIdNo;
    @ApiModelProperty("用户手机号")
    private String usePhoneNum;
    @ApiModelProperty("用户邮箱")
    private String useEmail;
    @ApiModelProperty("创建时间")
    private LocalDateTime createTime;
    @ApiModelProperty("修改时间")
    private LocalDateTime modifyTime;
    @ApiModelProperty("用户状态")
    private UseState useState;
}

第五步:启动应用,浏览器请求

http://localhost:8080/swagger-ui.html

可得到如下界面:
SpringBoot整合系列-整合Swagger2