zoukankan      html  css  js  c++  java
  • SpringBoot项目使用Swagger2(丝袜哥)实现接口测试管理

    案例如下:

    安装步骤,在写完的项目中,添加swagger的相关依赖

    使用官方依赖

    1、在pom.xml文件中添加swagger相关依赖
    复制代码
           <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>
    复制代码

    也可以:

    复制代码
         <properties>
        <!--swagger 版本 -->
        <swagger.version>2.7.0</swagger.version>
         </properties>
         <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>${swagger.version}</version>
            </dependency>
            <!-- swagger-ui -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>${swagger.version}</version>
            </dependency>
    复制代码
    第一个是API获取的包,第二是官方给出的一个ui界面。这个界面可以自定义,默认是官方的,对于安全问题,以及ui路由设置需要着重思考。
    2、swagger的configuration

    需要特别注意的是swagger scan base package,这是扫描注解的配置,即你的API接口位置。

    复制代码
    package cn.xnol.user;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    
    //swagger2的配置文件,在项目的启动类的同级文件建立
    @Configuration
    @EnableSwagger2
    //是否开启swagger,正式环境一般是需要关闭的(避免不必要的漏洞暴露!),可根据springboot的多环境配置进行设置
    @ConditionalOnProperty(name = "swagger.enable",  havingValue = "true")
    public class Swagger2 {
        // swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    // 为当前包路径
                    .apis(RequestHandlerSelectors.basePackage("cn.xnol.user.controller")).paths(PathSelectors.any())
                    .build();
                    //.pathMapping("/stu"); // 在这里可以设置请求的统一前缀
        }
        // 构建 api文档的详细信息函数,注意这里的注解引用的是哪个
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    // 页面标题
                    .title("SpringBoot基于Swagger2构建RESTful API接口测试")
                    // 描述
                    .description("API接口描述")
                    // 创建人信息
                    .contact(new Contact("Agoly", "https://www.cnblogs.com/qmfsun/", ""))
                    // 版本号
                    .version("1.0")
                    .build();
        }
    }
    复制代码

    swagger.enable=true
    springfox.documentation.swagger.v2.path = /user/api-docs

    在controller中的接口路由中添加接口说明信息

    复制代码
    package cn.xnol.user.controller;
    
    import cn.xnol.user.entry.User;
    import cn.xnol.user.service.UserService;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.domain.Page;
    import org.springframework.web.bind.annotation.*;
    
    import javax.servlet.http.HttpServletResponse;
    import java.util.List;
    
    // 用于类;表示标识这个类是swagger的资源
    //tags:说明,如果有多个tags,则会以list形式展示
    //value: 说明,可以使用tags替代
    @Api(value = "测试Controller" , tags = "用户服务")
    @RestController
    @RequestMapping("/user")
    public class UserController {
    
        @Autowired
        UserService userService;
    
        /**
         * 添加学生
         * @param user 要添加的用户对象
         * @return
         */
        @ApiOperation(value="新增用户")
        @PostMapping("/add")
        public User save(User user){
    
            return userService.save(user);
        }
    
        /**
         * 修改学生
         * @param user
         * @return
         */
        @ApiOperation(value = "修改用户", notes = "修改用户信息")
        @PostMapping("/update")
        public User update(User user){
            return userService.save(user);
        }
    
        /**
         * 删除用户
         * @param id 要删除的用户id
         * @return
         */
        @ApiOperation(value = "根据id删除用户", notes = "删除用户")
        @GetMapping("/del/{id}")
        public String del(@PathVariable int id){
            userService.delete(id);
            return "yes";
        }
    
        /**
         * 通过姓名找到信息
         * @param name
         * @return
         */
        @ApiOperation(value = "根据用户名查询", notes="用户名查询")
        @GetMapping("/findByName/{name}")
        public List<User> findByName(@PathVariable String name){
    
            return userService.findUserByName(name);
        }
    
        /**
         * 利用分页查找全部信息
         * @param page
         * @param response
         * @return
         */
        @ApiOperation(value = "分页查询", notes="默认5条记录显示页")
        @GetMapping("/query")
        public Page<User> findByPage(Integer page, HttpServletResponse response){
    
            //异步请求使用
            response.setHeader("Access-Control-Allow-Origin","*");
            if(page==null || page<=0){
                page = 0;
            }else{
                page -= 1;
            }
            return userService.findAll(page,5);
        }
    
    }
    复制代码

    配置完成,启动项目,效果如下:

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

    参考:

    https://www.jianshu.com/p/49afc7465ce5

    https://www.jianshu.com/p/be1e772b089a

    https://www.cnblogs.com/zs-notes/p/10845741.html

    https://blog.csdn.net/saytime/article/details/74937664

    https://blog.csdn.net/fengyang182/article/details/106635760

    作者:Agoly
    出处:https://www.cnblogs.com/qmfsun/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
     
  • 相关阅读:
    使用Micrisoft.net设计方案 第三章Web表示模式 Web模式集群详细介绍 Page Cache(页面缓存)
    使用Micrisoft.net设计方案 第三章Web表示模式 Web模式集群详细介绍 Intercepting Filter(截取筛选器)
    使用Micrisoft.net设计方案 第三章Web表示模式 Web模式集群详细介绍
    使用Micrisoft.net设计方案 第三章Web表示模式
    使用Micrisoft.net设计方案 第二章组织模式
    使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式
    Area区域路由的配置
    Area路由的配置
    layUI+mvc动态菜单数据表
    layUI+mvc动态菜单控制器
  • 原文地址:https://www.cnblogs.com/ryyy/p/14217759.html
Copyright © 2011-2022 走看看