• SpringBoot集成Swagger2


    1、简介

    首先谈谈什么是Web API

     如果我们把前端页面看作是一种用于展示的客户端,那么API就是为客户端提供数据、操作数据的接口。例如我们可以通过访问http://localhost:8080/getName?id=2来获取用户id=2的名字。

    REST就是一种设计API的模式,它的主要原则有:

    ** 网络上的所有事物都被抽象为资源**

    ** 每个资源都有一个唯一的资源标识符**

    ** 同一个资源具有多种表现形式(xml,json等)**

    ** 对资源的各种操作不会改变资源标识符**

    ** 所有的操作都是无状态的**

    ** 符合REST原则的架构方式即可称为RESTful**

    2、SpringBoot 集成Swagger2
         Swagger2可以用于生成、描述、调用和可视化 RESTful 风格的 Web 服务:

        首先添加依赖

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

     然后添加Swagger2配置项:

    package com.example.demo.config;
    
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.ApiKey;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    import java.util.ArrayList;
    import java.util.List;
    
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        public Docket buildDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(buildApiInf())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                .paths(PathSelectors.any())
                .build();
        }
    
        private ApiInfo buildApiInf() {
            return new ApiInfoBuilder()
                    .title("系统RESTful API文档")
                    .version("1.0")
                    .build();
        }
    
    
    }

      最后在Controller层进行配置就行,访问http://localhost:8080/swagger-ui.html即可以得到界面。有关操作方法我写在了注释里面

    package com.example.demo.controller;
    
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiImplicitParams;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    import springfox.documentation.annotations.ApiIgnore;
    
    //http://localhost:8080/swagger-ui.html
    @Api(value = "Controller") //修饰整个类
    @Controller
    @RequestMapping("/h1")
    public class ControllerDemo {
    
        //@ApiIgnore //忽略该请求
        //描述一个类的一个方法,或者说一个接口;
        @ApiOperation(value = "输出信息",notes="注释")
        @RequestMapping("/h11")
        @ResponseBody
        public String fun(){
            return "hello";
        }
    
    
        @DeleteMapping("/id")
        @ApiOperation(value = "多个参数请求")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "id",value = "用户Id",dataType = "int",required = true,paramType = "query"),
                @ApiImplicitParam(name = "name",value = "用户名字",dataType = "String",required = true)
        })
        /*
        *header-->请求参数的获取:@RequestHeader(代码中接收注解)
        query-->请求参数的获取:@RequestParam(代码中接收注解)
        path(用于restful接口)-->请求参数的获取:@PathVariable(代码中接收注解)
        body-->请求参数的获取:@RequestBody(代码中接收注解)*/
        public String fun2(@RequestParam("id") String id, @RequestParam("name") String name){
         return "id:"+id+"name:"+name;
        }
    
    
    }

    注:上面的第二个参数name,我忘记加paraType了,它的值也应该是query,不加他会默认为body的,如下面的图,还有用@RequestMapping时,尽量指定method,或者使用GepMapper,PutMapper,DeleteMapping等等,不然他会把生成多个使用不同方法的API,。

    还有没用到的注释先写在下面,以防后面会使用到。

    @ApiParam:单个参数描述;
    
    @ApiModel:用对象来接收参数;
    
    @ApiProperty:用对象接收参数时,描述对象的一个字段;
    
    @ApiResponse:HTTP响应其中1个描述;
    
    @ApiResponses:HTTP响应整体描述;
    
    @ApiIgnore:使用该注解忽略这个API;
    
    @ApiError :发生错误返回的信息;
  • 相关阅读:
    算法笔记_225:数字密码发生器(Java)
    LVS专题-(1)LVS基本介绍
    Mysql加锁过程详解(7)-初步理解MySQL的gap锁
    java实现二叉树的构建以及3种遍历方法
    java设计模式-菜鸟网络
    数据结构与算法(周鹏-未出版)-第六章 树-习题
    数据结构与算法(周鹏-未出版)-第六章 树-6.5 Huffman 树
    数据结构与算法(周鹏-未出版)-第六章 树-6.4 树、森林
    数据结构与算法(周鹏-未出版)-第六章 树-6.3 二叉树基本操作的实现
    数据结构与算法(周鹏-未出版)-第六章 树-6.2 二叉树
  • 原文地址:https://www.cnblogs.com/minblog/p/12531805.html
Copyright © 2020-2023  润新知