zoukankan      html  css  js  c++  java
  • SpringBoot整合系列-整合Swagger2

    原创作品,可以转载,但是请标注出处地址: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
    

    可得到如下界面:
    swagger view

  • 相关阅读:
    Redis 持久化总结
    Redis 持久化
    redis.conf的详细说明:
    linux 下 redis 安装
    redis 简介
    小心,Nginx 上传文件大小有限制!
    PSP总结报告
    作业20181204-1 每周例行报告
    对团队成员公开感谢博客
    作业20181127-2 每周例行报告
  • 原文地址:https://www.cnblogs.com/V1haoge/p/9959844.html
Copyright © 2011-2022 走看看