• Swagger简介


    Swagger简介

    前后端分离

    前端:完全脱离后端,前端独立开发,根据后端提供的接口可以事先设置一些假数据进行开发
    后端:事先主要的控制层,业务逻辑,持久层,注重高可用,高并发,高扩展
    前后端最后设置在不同的服务器上进行部署。
    前后端分离开发是目前业界的web主流开发模式,所以两个组的文档设置就很重要,而swagger就是一个在线的接口API框架,支持多种语言。

    Swagger相关依赖的导入

      <!--导入swagger-->
            <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.9.2</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.9.2</version>
            </dependency>
    
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    

    Swagger的简单配置

    首先创建一个controller,用来接收一个hello的请求返回简单的字符串。

    @RestController
    public class HelloController {
    
        @RequestMapping("/hello")
        public String HelloRequest(){
            return "Hello String";
        }
    }
    

    接着创建一个SwaggerConfig配置类

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    // 将Docket主键交给Spring容器管理
     @Bean
        public Docket docket() {
        // 选择Swagger2构造参数
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo());
        }
    }
    //这里需要创建ApiInfo对象,作为Docket.apiInfo方法的参数
    private ApiInfo apiInfo() {
            Contact contact = new Contact("Contact Name", "blog.csdn.net", "xxxx@qq.com");
            //关于Swagger文档的信息,标题名字,简单描述,版本号,地址
            return new ApiInfo("Swagger接口文档", "后端接口文档", "0.0.1",
                    "http://localhost:8080", contact, "Apache-2.0",
                    "www.goole.com", new ArrayList<>());
        }
    

    然后启动Application类,访问http://localhost:8080/swagger-ui.html
    在这里插入图片描述

     @Bean
        public Docket docket() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo());
                   // .enable(false); 构造中是true,这里如果设置成false再访问swagger.html就会出现下面这种情况
        }
    

    默认构造是设置成true
    在这里插入图片描述
    设置成false就会报错

    在这里插入图片描述

    Swagger扫描指定接口

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        /*
        *RequestHandlerSelectors
        * 指定接口扫描方式
        * */
    
        @Bean
        public Docket docket() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("club.qy.swagger.demo.controller"))   // any扫描全部,none不扫描
                    .paths(PathSelectors.ant("/controller/**"))  //paths过滤路径,any过滤全部,rex正则过滤,none不过滤
                    .build();
        }
    
        private ApiInfo apiInfo() {
            Contact contact = new Contact("Contact Name", "blog.csdn.net", "911168435@qq.com");
            return new ApiInfo("Swagger接口文档", "后端接口文档", "0.0.1",
                    "http://localhost:8080", contact, "Apache-2.0",
                    "www.goole.com", new ArrayList<>());
        }
    }
    

    @APiOperation注解主要使用在方法上,为请求的方法提供注释

    @GetMapping("/name/{name}")
        @ApiOperation(value = "根据名称模糊查询分类")
        public R searchTypeByName(@PathVariable(value = "name") String name){
            if(StringUtils.isEmpty(name)) {
                return null;
            }
            List<QuestionBank> list = qbService.list(new QueryWrapper<QuestionBank>().like("product_name", name));
            return R.ok(list);
        }
    
    
    

    @Api(value = “用户 Controller”,tags = {“用户访问接口”})
    @Api注释一般作用在类上给Controller标记标签名字和注释

    @RestController
    @RequestMapping("/user")
    @Api(value="用户 Controller",tags="用户访问接口")
    public class UserController{
    
    
    }
    
    

    @ApiModel作用在实体类上,@ApiModelProperty作用在类的属性上,为属性添加注释,这些注释最后都是为swagger在线文档提供参考,更容易是其他开发者理解与调试。

    设置多个选择框的方法:
    在Swagger的配置类中,创建多个Docket组件,将其交给Spring接管,每个Docket可以设置成不同的组名和其他不同的文档标题描述等属性。

       @Bean
        public Docket docket2(){
            return new Docket(DocumentationType.SWAGGER_2).groupName("战三");
        }
        @Bean
        public Docket docket1(){
            return new Docket(DocumentationType.SWAGGER_2).groupName("李四");
        }
        @Bean
        public Docket docket3(){
            return new Docket(DocumentationType.SWAGGER_2).groupName("王五");
        }
    

    Swagger的作用

    1. 通过Swagger可以给一些难以理解的属性和接口设置注释
    2. 接口文档实时更新
    3. 可以在线测试
  • 相关阅读:
    算法设计--从后向前处理
    野指针的危害究竟在哪里?
    printf参数的问题
    C++运算符详解问题详解
    java Clone 的心得记录
    拜占庭将军问题
    Java中的private protected public和default的区别
    Mybatis 学习笔记1 不整合Spring的方式使用mybatis
    Mybatis 使用maven插件mybatis-generator自动生成entities和SQL和mapper
    Mybatis 复习 Mybatis 配置 Mybatis项目结构
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14121900.html
Copyright © 2020-2023  润新知