zoukankan      html  css  js  c++  java
  • Springboot 4.Springboot 集成SwaggerUi

    SwaggerUi就是自动生成接口文档的这么一个类似于插件的工具,可以直接访问接口。

    首先打开pom文件,将插件引进来,然后增加一个属性<properties>,用来设置版本号的,然后直接用${}引用。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>JavaInterfaceTest</artifactId>
            <groupId>com.peixm.code</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>Chapter10</artifactId>
    
        <properties>
            <swagger.version>2.6.1</swagger.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
    
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>${swagger.version}</version>
            </dependency>
    
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>${swagger.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.14</version>
            </dependency>
        </dependencies>
    
    </project>

    然后创建一个config包,在创建一个类SwaggerConfig.java,用来配置swager

    package com.course.config;
    
    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.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;
    
    @Configuration  //在springboot里面专门为了加载配置文件的标签
    @EnableSwagger2   //自动加载配置文件
    public class SwaggerConfig {
        @Bean
        public Docket api(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .pathMapping("/")
                    .select()
                    .paths(PathSelectors.regex("/.*"))   //匹配那些访问的方法
                    .build();
        }
    
        private ApiInfo apiInfo() {
            //http://localhost:8888/swagger-ui.html
            return new ApiInfoBuilder().title("我的接口文档")
                    .contact(new Contact("xiaomin","","553238711@qq.com"))
                    .description("这是我的swaggerui生成的接口文档")
                    .version("1.0.0.0")
                    .build();
        }
    
    }

    然后在想要在swagger看到的接口类的类名上添加注解:@Api(value = "/",description = "这是我全部的get方法"),在每个方法上面添加  @ApiOperation(value = "通过这个方法可以获取到cookies的值",httpMethod ="GET"),(或者post)value就是一个描述,描述这个方法是做什么的。

    package com.course.server;
    
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.web.bind.annotation.*;
    
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Objects;
    
    @RestController    //被告诉我是你需要扫描的类
    @Api(value = "/",description = "这是我全部的get方法")
    public class MyGetMethod {
    
        @RequestMapping(value = "/getCookies",method = RequestMethod.GET)    //访问的路径是什么
        @ApiOperation(value = "通过这个方法可以获取到cookies的值",httpMethod ="GET")
        public String getCookies(HttpServletResponse response){
            //HttpServerletRequest    装请求信息
            //HttpServerletResponse   装响应信息
            Cookie cookie = new Cookie("login","ture");
            response.addCookie(cookie);
    
            return "恭喜你获得cookies信息成功";
        }
    
        /**
         * 要求客户端携带cookies访问
         * */
    
        @RequestMapping(value = "/get/with/cookies",method = RequestMethod.GET)
        @ApiOperation(value = "要求客户端携带cookies访问",httpMethod = "GET")
        public String getWithCookies(HttpServletRequest request){
            Cookie[] cookies = request.getCookies();
            if(Objects.isNull(cookies)){
                return "你必须携带cookies信息来";
            }
    
            for(Cookie cookie : cookies){
                if(cookie.getName().equals("login") && cookie.getName().equals("true")){
                    return "恭喜你访问成功";
                }
            }
            return "你必须携带cookies信息来";
        }
    
        /**
        * 开发一个需要携带参数才能访问的get请求
        * 第一种实现方式是 url: ip:port/get/with/param?key=value&key=value
        * 模拟获取商品列表  开始页数,结束的页数,一页20条数据
        * */
    
        //第一种需要携带参数访问的get请求
        @RequestMapping(value = "/get/with/param",method = RequestMethod.GET)
        @ApiOperation(value = "携带参数才能访问的get请求",httpMethod = "GET")
        public Map<String,Integer> getList(@RequestParam Integer start,
                                           @RequestParam Integer end){
            Map<String,Integer> myList = new HashMap<>();
            myList.put("鞋",400);
            myList.put("衬衫",300);
            myList.put("干脆面",1);
    
            return myList;
    
        }
    
        /**
         *第2种需要携带参数访问的get请求
         * url:  ip:port/get/with/param/10/20
         * */
    
        @RequestMapping(value = "/get/with/param/{start}/{end}")
        @ApiOperation(value = "第2种需要携带参数访问的get请求",httpMethod = "GET")
        public Map myGetList(@PathVariable Integer start,
                             @PathVariable Integer end){
    
            Map<String,Integer> myList = new HashMap<>();
            myList.put("鞋",400);
            myList.put("衬衫",300);
            myList.put("干脆面",1);
    
            return myList;
        }
    
    }

    然后改变启动文件里面的要检测的包

    然后在浏览器输入:http://localhost:8888/swagger-ui.html 就会出现所有的接口

    点击接口可以进行接口测试:try out就可以请求

  • 相关阅读:
    JavaScript 数据类型判断
    使用渐进增强的方式美化复选框样式
    使用 Bootstrap 和 HTML5 Boilerplate 开始一个项目
    CSS基础知识之文本属性二三事
    精简CSS代码
    CSS选择器特殊性与重要性
    面试官:能解释一下javascript中的this吗
    VueRouter爬坑第四篇-命名路由、编程式导航
    Vuex实践(下)-mapState和mapGetters
    Vuex实践(中)-多module中的state、mutations、actions和getters
  • 原文地址:https://www.cnblogs.com/peiminer/p/9687813.html
Copyright © 2011-2022 走看看