• SpringBoot整合Swagger2


    SpringBoot整合Swagger2

    添加依赖

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

    添加Swagger配置类

    接下来在 config 包下创建一个 Swagger 配置类 Swagger2Configuration,在配置类上加入注解 @EnableSwagger2,表明开启 Swagger,注入一个 Docket 类来配置一些 API 相关信息,apiInfo() 方法内定义了几个文档信息,代码如下:

      @Configuration
    @EnableSwagger2
    public class Swagger2Config {
       @Bean
       public Docket createRestApi(){
           return new Docket(DocumentationType.SWAGGER_2)
                  .apiInfo(apiInfo())
                  .select()
                   //为当前包下controller生成API文档
                  .apis(RequestHandlerSelectors.basePackage("com.xx.controller"))
                   //为有@Api注解的Controller生成API文档
                   // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                   //为有@ApiOperation注解的方法生成API文档
                   // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                  .paths(PathSelectors.any())
                  .build();
      }

       private ApiInfo apiInfo() {
           return new ApiInfoBuilder()
                   //接口文档标题
                  .title("SwaggerUI演示")
                   //详细描述
                  .description("Swagger2 接口文档")
                   //维护人、维护人 URL 以及 email
                  .contact(new Contact("www", "https://www.hyms.com", "hh@qq.com"))
                   //版本号
                  .version("1.0")
                  .build();
      }
    }

    编写API文档

    domain 包下创建一个 User 实体类,使用 @ApiModel 注解表明这是一个 Swagger 返回的实体,@ApiModelProperty 注解表明几个实体的属性,代码如下(其中 getter/setter 省略不显示):

      
    @ApiModel(value = "用户", description = "用户实体类")
    public class User {
       @ApiModelProperty(value = "用户 id", hidden = true)
       private Long id;
       @ApiModelProperty(value = "用户姓名")
       private String name;
       @ApiModelProperty(value = "用户年龄")
       private String age;
       // getter/setter
    }

    最后,在 controller 包下创建一个 UserController 类,提供用户 API 接口,代码如下:

      
    @RestController
    @RequestMapping("/users")
    @Api(tags = "用户管理接口")
    public class UserController {

       Map<Long, User> users = Collections.synchronizedMap(new HashMap<>());

       @GetMapping("/")
       @ApiOperation(value = "获取用户列表", notes = "获取用户列表")
       public List<User> getUserList() {
           return new ArrayList<>(users.values());
      }

       @PostMapping("/")
       @ApiOperation(value = "创建用户")
       public String addUser(@RequestBody User user) {
           users.put(user.getId(), user);
           return "success";
      }

       @GetMapping("/{id}")
       @ApiOperation(value = "获取指定 id 的用户")
       @ApiImplicitParam(name = "id", value = "用户 id", paramType = "query", dataTypeClass = Long.class, defaultValue = "999", required = true)
       public User getUserById(@PathVariable Long id) {
           return users.get(id);
      }

       @PutMapping("/{id}")
       @ApiOperation(value = "根据 id 更新用户")
       @ApiImplicitParams({
               @ApiImplicitParam(name = "id", value = "用户 id", defaultValue = "1"),
               @ApiImplicitParam(name = "name", value = "用户姓名", defaultValue = "wupx"),
               @ApiImplicitParam(name = "age", value = "用户年龄", defaultValue = "18")
      })
       public User updateUserById(@PathVariable Long id, @RequestParam String name, @RequestParam Integer age) {
           User user = users.get(id);
           user.setName(name);
           user.setAge(age);
           return user;
      }

       @DeleteMapping("/{id}")
       @ApiOperation(value = "删除用户", notes = "根据 id 删除用户")
       @ApiImplicitParam(name = "id", value = "用户 id", dataTypeClass = Long.class, required = true)
       public String deleteUserById(@PathVariable Long id) {
           users.remove(id);
           return "success";
      }
    }

    启动项目,访问 http://localhost:8080/swagger-ui.html,可以看到我们定义的文档已经在 Swagger 页面上显示了

    更多面试资料,JDK文档,阿里巴巴Java开发手册,pdf书籍,视频,公号《Java路》

  • 相关阅读:
    在ASP.NET中把数据POST到其他页面
    在网页中使用javascript打开没有最大化、最小化和关闭按钮的窗口
    怎么找回被删并清空了回收站的文件
    域控制器的安装步骤二——把客户机加入到域
    升级和卸载域AD:实现域网络管理二
    不用设置BIOS,也能让光驱启动电脑!
    老版(旧版)封神榜片头,片尾曲
    域控制器的安装步骤一
    SEO面试试题
    如何将客户机添加到域?
  • 原文地址:https://www.cnblogs.com/JavaUsername/p/13878167.html
Copyright © 2020-2023  润新知