zoukankan      html  css  js  c++  java
  • 使用Swagger2构建API文档

    依赖:

    <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>

    创建对应的配置类

    package com.xhn.springbootdemo.config;
    
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.RequestHandler;
    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;
    
    //自定义配置类
    /**
     * Swagger2配置类
     * 在与spring boot集成时,放在与Application.java同级的目录下。
     * 通过@Configuration注解,让Spring来加载该类配置。
     * 再通过@EnableSwagger2注解来启用Swagger2。
     */
    @Configuration
    @EnableSwagger2 //开启在线文档
    public class SwaggerConfig {
        //声明api 文档的属性和 构建器
        /**
         * 创建该API的基本信息(这些基本信息会展现在文档页面中)
         * 访问地址:http://项目实际地址/swagger-ui.html
         * @return
         */
        private ApiInfo apiInfo(){
            return new ApiInfoBuilder().title("springboot使用Swagger编写Restful风格的在线文档")
                    .description("优乐选")
                    .termsOfServiceUrl("http://www.youlexuan.com")
                    .contact("xhn")
                    .version("1.1.2")
                    .build();
        }
        /**
         * 创建API应用
         * apiInfo() 增加API相关信息
         * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
         * 本例采用指定扫描的包路径来定义指定要建立API的目录。
         *
         * @return
         */
        public Docket createRestApi(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.xhn.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
    }

    对应的controller中添加对应的注解:

    package com.xhn.springbootdemo.controller;
    
    
    import com.xhn.springbootdemo.po.UserBody;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiImplicitParams;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    @RestController
    @RequestMapping("/userbody")
    public class UserBodyController {
    
        private List<UserBody> listUser= Collections.synchronizedList(new ArrayList<UserBody>());
        //实现查询所有用户
    
        @GetMapping("/")
        public List<UserBody> getUserList(){
            return listUser;
        }
    
        //实现添加操作
        @PostMapping("/")
        public String createUser(UserBody userBody){
            listUser.add(userBody);
            return "success";
        }
        //实现删除功能
        @DeleteMapping("/{id}")
        @ApiOperation(value="删除指定id用户信息", notes="根据id删除用户信息")
        @ApiImplicitParam(name = "id", value = "用户id", required = true, dataType = "Long")
        public String deleteUser(@PathVariable("id") Long id){
            listUser.remove(id);
            return "success";
        }
    
        //修改需要先查询出对应的一条数据
        @GetMapping("/{id}")
        public UserBody getUserById(@PathVariable("id") Long id){
            //获取指定id的数据
            for (UserBody userBody : listUser) {
                if (userBody.getId() == id){
                    return userBody;
                }
            }
            return null;
        }
    
        //更新指定id用户信息
        @PutMapping("/{id}")
        @ApiOperation(value="更新指定id用户信息", notes="根据id更新用户信息")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
                @ApiImplicitParam(name = "userBody", value = "用户详细实体user", required = true, dataType = "userBody")
        })
        public String updateUserBody(@PathVariable("id") Long id,UserBody userBody){
            for (UserBody body : listUser) {
                if (body.getId()==id){
                    //就进行修改操作
                    body.setMobile(userBody.getMobile());
                    body.setAddress(userBody.getAddress());
                    body.setAge(userBody.getAge());
                    body.setName(userBody.getName());
                }
            }
            return "success";
        }
    }

    效果图展示:

    package com.xhn.springbootdemo.config;

    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.RequestHandler;
    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;

    //自定义配置类
    /**
    * Swagger2配置类
    * 在与spring boot集成时,放在与Application.java同级的目录下。
    * 通过@Configuration注解,让Spring来加载该类配置。
    * 再通过@EnableSwagger2注解来启用Swagger2
    */
    @Configuration
    @EnableSwagger2 //开启在线文档
    public class SwaggerConfig {
    //声明api 文档的属性和 构建器
    /**
    * 创建该API的基本信息(这些基本信息会展现在文档页面中)
    * 访问地址:http://项目实际地址/swagger-ui.html
    * @return
    */
    private ApiInfo apiInfo(){
    return new ApiInfoBuilder().title("springboot使用Swagger编写Restful风格的在线文档")
    .description("优乐选")
    .termsOfServiceUrl("http://www.youlexuan.com")
    .contact("xhn")
    .version("1.1.2")
    .build();
    }
    /**
    * 创建API应用
    * apiInfo() 增加API相关信息
    * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
    * 本例采用指定扫描的包路径来定义指定要建立API的目录。
    *
    * @return
    */
    public Docket createRestApi(){
    return new Docket(DocumentationType.SWAGGER_2)
    .apiInfo(apiInfo())
    .select()
    .apis(RequestHandlerSelectors.basePackage("com.xhn.controller"))
    .paths(PathSelectors.any())
    .build();
    }
    }
  • 相关阅读:
    leetcode刷题16
    leetcode刷题15
    leetcode刷题14
    leetcode刷题13
    UnityWebReqest和WWW,请求web数据打包到Android手机上,报错 Unknown error记录
    Unable to instantiate prefab. Prefab may be broken.(Unity2018.2.2报错)
    Unity 2018.4.0 回退到 2018.2.2 出现错误日志修复
    Windows系统中,使用Protobuf,编译出C#文件
    Unity长按Button,显示消息盒子
    Mac 端 查找UnityEngine.dll和UnityEngine.UI.dll
  • 原文地址:https://www.cnblogs.com/xinghaonan/p/11798249.html
Copyright © 2011-2022 走看看