zoukankan      html  css  js  c++  java
  • 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. 可以在线测试
  • 相关阅读:
    UVALive
    训练指南 UVA
    训练指南 UVALive
    Codeforces Round #535 (Div. 3)
    训练指南 UVALive
    训练指南 UVALive
    Codeforces Round #534 (Div. 2)
    Codeforces Round #532 (Div. 2)
    《算法问题实战策略》——chaper9——动态规划法技巧
    《训练指南》——8.3
  • 原文地址:https://www.cnblogs.com/itjiangpo/p/14181357.html
Copyright © 2011-2022 走看看