【学习笔记】SpringBoot集成SwaggerUi

  1. SwaggerUi: 自动生成接口文档的,类似于插件的一个工具~,生成接口文档,测试接口,减少开发的工作量,相当于开发的时候使用了SwaggerUi就不用单独写接口文档了
  2. 如何使用SwaggerUi, 第一步: 修改POM文件如下:(添加了2个dependency)


    4.0.0

    com.gracie.demo.springboot
    Chapter10
    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.5.RELEASE
    
 
        
            org.springframework.boot
            spring-boot-starter-web
        
     
         io.springfox
         springfox-swagger2
         ${swagger.version}
     

     
         io.springfox
         springfox-swagger-ui
         ${swagger.version}
     

 

    
        1.8
        2.9.2
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

  1. 创建配置类文件如下(重点,此处基本上是固定写法):
package com.gracie.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 //加载swagger
public class SwaggerConfig {

    @Bean
    public Docket api(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo()) // 调用apiInfo方法
                .pathMapping("/") //配置访问路径
                .select()
                .paths(PathSelectors.regex("/.*")) //匹配路径下的方法
                .build();

    }

    private ApiInfo apiInfo(){
        return new ApiInfoBuilder().title("")
                .contact(new Contact("gracie","", "[email protected]"))
                .description("这是我的swaggerui生成的接口文档")
                .version("1.0.0.0")
                .build();

    }

}

  1. 重新运行application.main(), 启动成功:
    在这里插入图片描述
  2. 在web端运行:http://localhost:8004/swagger-ui.html, 此处是固定写法, 报了一个问题:
    【学习笔记】SpringBoot集成SwaggerUi_第1张图片解决问题如下:(参考https://www.jianshu.com/p/0c92ec5bb257)
    主要原因是:Spring没有扫描到Swagger配置类从而没法自动创建Bean,修改如下:
    【学习笔记】SpringBoot集成SwaggerUi_第2张图片6. 从新打开:http://localhost:8004/swagger-ui.html,得到结果如下:
    【学习笔记】SpringBoot集成SwaggerUi_第3张图片
  3. 给方法加上注释:
package com.gracie.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 //告诉@ComponentScan , 我是需要被扫描的类
@Api(value="/", description = "这是我全部的get方法")
public class MyGetMethod2 {

    @RequestMapping(value="/getcookies", method = RequestMethod.GET) //配置访问方法和路径
    @ApiOperation(value="通过这个方法可以获得cookies", httpMethod = "GET")
    public String getCookies(HttpServletResponse response){
        //HttpServletRequest 装请求信息的类,从客户端带着信息来server
        //HttpServletResponse 装响应信息的类, 从server端带着信息回到客户端

        Cookie cookie=new Cookie("login", "true"); //设定cookie值
        response.addCookie(cookie);
        return "恭喜你获得cookies成功";
    }

    /*
    开发一个需要携带参数才能访问的get请求
    第一种实现方式: url: key=value&key=value
    我们来模拟获取商品列表
     */
    @RequestMapping(value="/get/with/param", method = RequestMethod.GET)
    @ApiOperation(value="通过这个方法可以携带cookie,参数去访问get方法", httpMethod = "GET")
    public Map getList(HttpServletRequest request, @RequestParam Integer start, @RequestParam Integer end){


        Cookie[] cookies=request.getCookies();
        /*HttpServletRequest里有一个方法叫request.getCookies,此方法可以返回cookie,注意cookie是键值对,所以是数组
        需要通过一个数组来存储它         */

        if (Objects.isNull(cookies)){
            System.out.println("判断结果:你需要携带cookies信息来"); ; //判断返回的数组cookies是不是为空
        }

        for (Cookie cookie: cookies){
            if (cookie.getName().equals("login") && cookie.getValue().equals("true")){
                System.out.println("恭喜你访问成功"); //对cookies信息做一个判断,如果判断ok,则表示cookies里的确是有信息
            }
        }
        //商品列表返回的是一个Map, 有一个商品名称,有一个价格
        //@RequestParam,此注解设置开始位置和结束位置
        //真实项目中需要拿start和end到数据库中取值,此处模拟以下商品
        Map myList=new HashMap<>(); //模拟商品
        myList.put("Shoes", 400);
        myList.put("T-shirt", 200);
        myList.put("Doll", 500);

        return myList;
    }



}

  1. 重新刷新http://localhost:8004/swagger-ui.html, 得到结果如下:
    【学习笔记】SpringBoot集成SwaggerUi_第4张图片

你可能感兴趣的:(【学习笔记】SpringBoot集成SwaggerUi)