zoukankan      html  css  js  c++  java
  • Swagger 是一个用于生成、描述和调用 RESTful 接口的 Web 服务

    0.前言

    其实大家也知道,平时的开发中交流成本占据了我们很大一部分时间,但前后端如果有一个好的协作方式的话能解决很多时间。这里推荐一个文档生成器 swagger。 swagger是一个REST APIs文档生成工具,可以在许多不同的平台上从代码注释中自动生成,开源,支持大部分语言,社区好,总之就是一个强大,如下图的api 文档(swagger自动生成,ui忽略)

    api 地址,需要传是没参数,需要的传参类型,返回的数据格式什么都一清二楚了。

    1.Swagger 是什么?

    Swagger 是一个用于生成、描述和调用 RESTful 接口的 Web 服务。通俗的来讲,Swagger 就是将项目中所有(想要暴露的)接口展现在页面上,并且可以进行接口调用和测试的服务。

    PS:Swagger 遵循了 OpenAPI 规范,OpenAPI 是 Linux 基金会的一个项目,试图通过定义一种用来描述 API 格式或 API 定义的语言,来规范 RESTful 服务开发过程。

    Swagger 官网地址:

    2.Swagger 有什么用?

    从上述 Swagger 定义我们不难看出 Swagger 有以下 3 个重要的作用:

    1. 将项目中所有的接口展现在页面上,这样后端程序员就不需要专门为前端使用者编写专门的接口文档;
    2. 当接口更新之后,只需要修改代码中的 Swagger 描述就可以实时生成新的接口文档了,从而规避了接口文档老旧不能使用的问题
    3. 通过 Swagger 页面,我们可以直接进行接口调用,降低了项目开发阶段的调试成本

    3.Swagger 版本说明

    Swagger 3.0 发布已经有一段时间了,它于 2020.7 月 发布,但目前市面上使用的主流版本还是 Swagger 2.X 版本和少量的 1.X 版本,然而作为一名合格的程序员怎么能不折腾新技术呢?所以本期就大家带来一篇最新版 Swagger 的内容,本文会带大家看最新版 Swagger 有哪些改变?又是如何将老版本 Swagger 升级到新版的?

    3.1.Swagger 旧版本使用

    Swagger 旧版本也就是目前市面上主流的 V2 版本是 Swagger 2.9.2,在讲新版本之前,我们先来回顾一下 Swagger 2.9.2 是如何使用的。

    Swagger 2.9.2 的使用分为以下 4 步:

    1. 添加依赖
    2. 开启 Swagger 功能
    3. 配置 Swagger 文档摘要信息
    4. 调用接口访问

    下面我们分别来看。

    3.1.1.添加依赖

    首先,我们要去 mvnrepository 查询 Swagger 的依赖,搜索“springfox”关键字,得到结果的前两条依赖信息,就是我们想要的结果,如下图所示:

    将这两个依赖添加带项目中:
    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    
    <!-- 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>

    为什么是“springfox”?

    问:我们要使用的是 Swagger,为什么要搜索“springfox”?

    答:Swagger 可以看作是一个遵循了 OpenAPI 规范的一项技术,而 springfox 则是这项技术的具体实现。 就好比 Spring 中的 AOP 和 DI 一样,前者是思想,而后者是实现。

    3.1.2.开启Swagger

    在 Spring Boot 的启动类或配置类中添加 @EnableSwagger2 注释,开启 Swagger,部分核心代码如下:

    @EnableSwagger2
    @SpringBootApplication
    public class Application {...

    3.1.3.配置摘要信息

    作者:王磊
    链接:https://www.zhihu.com/question/63803795/answer/1780508067
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    public class SwaggerConfig {
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2) // 1.SWAGGER_2
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.example.swaggerv2.controller")) // 2.设置扫描路径
                    .build();
        }
    }

    3.1.4.访问Swagger

    项目正常启动之后使用“http://localhost:8080/swagger-ui.html”访问Swagger页面,如下图所示:

    3.2.Swagger 最新版使用

    Swagger 最新版的配置步骤和旧版本是一样,只是每个具体的配置项又略有不同,具体步骤如下。

    3.2.1.添加依赖

    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter -->
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-boot-starter</artifactId>
      <version>3.0.0</version>
    </dependency>

    从上述配置可以看出,Swagger 新版本的依赖项只有一个,而旧版本的依赖项有两个,相比来说也简洁了很多。

    3.2.2.开启Swagger

    在 Spring Boot 的启动类或配置类中添加 @EnableOpenApi 注释,开启 Swagger,部分核心代码如下:

    @EnableOpenApi
    @SpringBootApplication
    public class Application {...

    3.2.3.配置摘要信息

    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.oas.annotations.EnableOpenApi;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    
    @Configuration
    public class SwaggerConfig {
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.OAS_30) // v2 不同
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.example.swaggerv3.controller")) // 设置扫描路径
                    .build();
        }
    }

    从上述代码可以看出 Docket 的配置中只有文档的类型设置新老版本是不同的,新版本的配置是 OAS_30 而旧版本的配置是 SWAGGER_2

    PS:OAS 是 OpenAPI Specification 的简称,翻译成中文就是 OpenAPI 说明书。

    3.2.4.访问Swagger

    新版本的 Swagger 访问地址和老版本的地址是不同的,新版版的访问地址是“localhost:8080/swagger-ui/””,如下图所示:

    3.3.新版本 VS 老版本

    新版本和老版本的区别主要体现在以下 4 个方面:

    1. 依赖项的添加不同:新版本只需要添加一项,而老版本需要添加两项;
    2. 启动 Swagger 的注解不同:新版本使用的是 @EnableOpenApi,而老版本是 @EnableSwagger2
    3. Docket(文档摘要信息)的文件类型配置不同:新版本配置的是 OAS_3,而老版本是 SWAGGER_2
    4. Swagger UI 访问地址不同:新版本访问地址是“http://localhost:8080/swagger-ui/”,而老版本访问地址是“http://localhost:8080/swagger-ui.html”。

    4.总结

    Swagger 新版本让人印象深刻的优点有两个:第一,配置变得简单了,比如依赖项配置减少了 50%,第二,新版 Swagger 页面设计风格有了不小的改变,新版的页面让人感觉更加现代化也更加具有科技感了,总体来说美观了不少。

    值得一提的是 Swagger 的整个升级过程很平滑,从老版本升级到新版本,只需要简单的配置即可,那些用于描述接口的注解还是延续了老版本的用法,这样就可以在不修改大部分主要代码的情况下,可以成功到最新版本啦。

    参考---https://www.zhihu.com/question/63803795/answer/1780508067

  • 相关阅读:
    洛谷P1628 合并序列
    洛谷 P1334 瑞瑞的木板==P2664 【题目待添加】
    洛谷P1090 合并果子
    洛谷P3378 【模板】堆
    codevs 3129 奶牛代理商IX
    codevs 3344 迷宫
    codevs 2549 自然数和分解
    codevs 3096 流输入练习——寻找Sb.VI
    洛谷 P1821 [USACO07FEB]银牛派对Silver Cow Party
    洛谷 P1629 邮递员送信
  • 原文地址:https://www.cnblogs.com/pwindy/p/15104358.html
Copyright © 2011-2022 走看看