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();
    }
    }
  • 相关阅读:
    Software Solutions CACHE COHERENCE AND THE MESI PROTOCOL
    CACHE COHERENCE AND THE MESI PROTOCOL
    Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
    Organization SYMMETRIC MULTIPROCESSORS
    PARALLEL PROCESSING
    1分钟内发送差评邮件
    Secure Digital
    SYMMETRIC MULTIPROCESSORS
    A Taxonomy of Parallel Processor Architectures
    parallelism
  • 原文地址:https://www.cnblogs.com/xinghaonan/p/11798249.html
Copyright © 2011-2022 走看看