zoukankan      html  css  js  c++  java
  • Swagger(基本使用、配置、API文档分组、添加注释、测试)

    1、Swagger

    (1)前后端分离
    vue + SpringBoot

    后端时代:前端只用管理静态页面;:html==>后端。模板引擎JSP=>后端是主力

    2、Swagger的使用

    (1)新建一个springboot项目

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

    (2)书写一个controller

    @RestController
    public class SwaggerController {
        @RequestMapping("hello")
        public String test(){
            return "hello";
        }
    }

    (3)集成swagger

    @Configuration
    @EnableSwagger2
    
    public class SwaggerConfig {
    
    }

    (4)访问swagger-ui页面

     (5)配置

    @Configuration
    @EnableSwagger2
    
    public class SwaggerConfig {
        @Bean
        public Docket docket() {//将默认的配置信息给覆盖掉
            return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
        }
    
        private ApiInfo apiInfo() {
            //作者信息
            Contact contact=new Contact("zhai","https://www.cnblogs.com/zhai1997/","3428834830@qq.com");
            return new ApiInfo(
                    "zhai的swagger",
                    "怀梦想,致远方",
                    "1.1.2",
                    "https://www.cnblogs.com/zhai1997/",
                    contact,
                    "2.0",
                    "https://www.cnblogs.com/zhai1997/",
                    new ArrayList<>()
                    );
        }
    }

    (6)测试

    (6)配置扫描接口及开关

    public class SwaggerConfig {
        @Bean
        public Docket docket() {//将默认的配置信息给覆盖掉
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    //是否启用Swagger,如果为false则不能在浏览器中访问Swagger
                    .enable(true)
                    .select()
                    //basePackage指定要扫描的包
                    //any:所有
                    .apis(RequestHandlerSelectors.basePackage("com.zhb.controller"))
                    //过滤路径
                    //.paths(PathSelectors.ant("/com/**"))
                    .build();
        }
    
        private ApiInfo apiInfo() {
            //作者信息
            Contact contact=new Contact("zhai","https://www.cnblogs.com/zhai1997/","3428834830@qq.com");
            return new ApiInfo(
                    "zhai的swagger",
                    "怀梦想,致远方",
                    "1.1.2",
                    "https://www.cnblogs.com/zhai1997/",
                    contact,
                    "2.0",
                    "https://www.cnblogs.com/zhai1997/",
                    new ArrayList<>()
                    );
        }
    }

    3、API文档的分组

    (1)配置一个API分组

     @Bean
        public Docket docket() {//将默认的配置信息给覆盖掉
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .groupName("zhai")
                    //是否启用Swagger,如果为false则不能在浏览器中访问Swagger
                    .enable(true)
                    .select()
                    //basePackage指定要扫描的包
                    //any:所有
                    .apis(RequestHandlerSelectors.basePackage("com.zhb.controller"))
                    //过滤路径
                    //.paths(PathSelectors.ant("/com/**"))
                    .build();
        }

    测试结果:

    (2) 多个分组,需要多个Docket实例

    4、给实体类添加注释

    (1)创建实体类并添加注释

    @ApiModel("用户")
    public class User {
        @ApiModelProperty("用户名")
        public String username;
        @ApiModelProperty("密码")
        public String password;
    }

     在controller中返回的是一个Student类型的数据:

     @PostMapping("hello1")
        public User test1(){
            return new User();
        }

    5、给controller的方法添加注释

    @ApiOperation("hello的控制类")
        @GetMapping("hello2")
        public String hello(String username){
            return username+"你好";
        }

    6、测试功能

    (1)书写controller

      @GetMapping("hello2")
        public String hello(String username){
            return username+"你好";
        }

    点击tryit out:

    输入数据进行测试:

    测试结果:

    (2)异常提示

    故意制造异常:

       @GetMapping("hello2")
        public String hello(String username){
            int i=100/0;
            return username+"你好";
        }

    • 我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息
    • 接口文档实时更新
    • 可以在线测试
  • 相关阅读:
    Metasploit基本命令
    Metasploit体系框架与技术模块
    Linux之grep、egrep、fgrep
    python基础-函数详解
    windows用户管理与服务器远程管理
    python基础-三分钟彻底搞懂 集合
    linux之bash特性及脚本编程基础
    location.reload(); 刷新页面 javascript:void(0)禁止点击 read.onload=function ()等待函数完成执行 { $('#img-file').attr('src', read.result) 修改图片属性
    auth模块进行验证登录,forms进行输入和后台进行渲染,novalidate前台不验证
    跨域问题,ajax上传下载文件,cookie实现登录验证,session实现登录验证,
  • 原文地址:https://www.cnblogs.com/zhai1997/p/13797834.html
Copyright © 2011-2022 走看看