亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springBoot詳解集成Swagger流程

 更新時(shí)間:2022年06月28日 08:48:57   作者:奔走的王木木Sir  
Swagger是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化?Restful?風(fēng)格的?Web?服務(wù)??傮w目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來(lái)更新。文件的方法、參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來(lái)始終保持同步

目標(biāo):

  • 了解Swagger的作用和概念
  • 了解前后端分離
  • 在springBoot中集成Swagger

Swagger簡(jiǎn)介

前后端分離

VUE+springBoot

  • 后端 :后端控制層、服務(wù)層、數(shù)據(jù)訪問(wèn)層
  • 前端 :前端控制層、視圖層
  • 前后端通過(guò)API進(jìn)行交互
  • 前后端相對(duì)獨(dú)立,松耦合
  • 可以部署在不同的服務(wù)器上

產(chǎn)生的問(wèn)題

前后端集成,前端或者后端無(wú)法做到“及時(shí)協(xié)商,盡早解決”,最終導(dǎo)致問(wèn)題集中爆發(fā)

解決方案

首先定義計(jì)劃的提綱,并實(shí)時(shí)跟蹤最新的API,降低集成風(fēng)險(xiǎn)

Swagger

  • 號(hào)稱(chēng)世界上最流行的API框架
  • Restful Api 文檔在線自動(dòng)生成器 =>API 文檔 與API 定義同步更新
  • 直接運(yùn)行,可以在線測(cè)試API接口;
  • 支持多種語(yǔ)言 (如:Java,PHP等)
  • 官網(wǎng):https://swagger.io/

SpringBoot集成Swagger

新建一個(gè)springboot-web項(xiàng)目

下載maven依賴(lài)https://mvnrepository.com/search?q=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>

高版本是沒(méi)有第5部的測(cè)試頁(yè)面

3.0.0版本的要先在啟動(dòng)類(lèi)中加上注解@EnableOpenApi先在導(dǎo)入<groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId>

編寫(xiě)Controller,測(cè)試運(yùn)行成功

配置Swagger=》在包Config下

package com.hxl.config;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2 //開(kāi)啟swagger2
public class SwaggerConfig {
}

測(cè)試運(yùn)行:http://localhost:8080/swagger-ui.html

配置Swagger

Swagger實(shí)例Bean是Docket,所以通過(guò)配置Docket實(shí)例來(lái)配置Swaggger。

//配置了Swagger的Docket實(shí)例
@Bean
public Docket docket(){
    return new Docket(DocumentationType.SWAGGER_2);
}

再通過(guò)ApiInfo()屬性配置文檔信息

private ApiInfo apiInfo(){
    //作者信息
    Contact contact = new Contact("王木木","https://blog.csdn.net/qq_43585922?spm=1000.2115.3001.5343","11@qq.com");
    return new ApiInfo(
        "Swagger筆記", //標(biāo)題
        "沖沖沖", //描述
        "v1.0。0", //版本
        "https://blog.csdn.net/qq_43585922?spm=1000.2115.3001.5343", //組織鏈接
        contact, //聯(lián)系人信息
        "Apach 2.0 許可", //許可
        "許可鏈接", //許可連接
        new ArrayList<>()//擴(kuò)展
    );
}

Docket關(guān)聯(lián)上ApiInfo

@Bean
public Docket docket(){
    return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
}

啟動(dòng)項(xiàng)目,訪問(wèn)http://localhost:8080/swagger-ui.html

Swagger配置掃描接口

構(gòu)建Docket時(shí)通過(guò)select()方法配置怎么掃描接口。select()build()是一套的

//配置了Swagger的Docket實(shí)例
@Bean
public Docket docket(){
    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo())
        .select()
        /*
                RequestHandlerSelectors:要掃描接口的方式
                basePackage:指定要掃描的包
                any():掃描全部
                none():不掃描
                withClassAnnotation:掃描類(lèi)上的注解,參數(shù)是一個(gè)注解的反射對(duì)象
                withMethodAnnotation:掃描方法上的注解
                path():過(guò)濾什么路徑
                */
        .apis(RequestHandlerSelectors.basePackage("com.hxl.controller"))
        //.paths(PathSelectors.ant("/hxl/**"))
        .build();
}

我們看之前的運(yùn)行結(jié)構(gòu)可以看到有base-error-controllerhello-controller,一旦使用了上述配置后,運(yùn)行結(jié)果只有hello-controller

配置是否啟動(dòng)Swagger

通過(guò)enable()方法配置是否啟用swagger

@Bean
public Docket docket(){
    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo())
        //enable是否啟動(dòng)Swagger,默認(rèn)為true,如果該位false則不能在瀏覽器中訪問(wèn)
        .enable(false)
        .select()
        /*
                RequestHandlerSelectors:要掃描接口的方式
                basePackage:指定要掃描的包
                any():掃描全部
                none():不掃描
                withClassAnnotation:掃描類(lèi)上的注解,參數(shù)是一個(gè)注解的反射對(duì)象
                withMethodAnnotation:掃描方法上的注解
                path():過(guò)濾什么路徑
                */
        .apis(RequestHandlerSelectors.basePackage("com.hxl.controller"))
        //.paths(PathSelectors.ant("/hxl/**"))
        .build();
}

Swagger在生產(chǎn)環(huán)境中使用,在發(fā)布的時(shí)候不使用

  • 判斷是否是生產(chǎn)環(huán)境
  • 注入enable()值

當(dāng)我們有多個(gè)生產(chǎn)環(huán)境時(shí)。比如說(shuō)application-dev.yamlapplication-pro.yaml。動(dòng)態(tài)設(shè)置當(dāng)前項(xiàng)目處于dev時(shí)顯示swagger,Pro是不顯示

#哪個(gè)環(huán)境生效
spring.profiles.active=dev

設(shè)置我們的dev走8081,默認(rèn)走8080,pro走8082

然后修改我們的配置

@Bean
public Docket docket(Environment environment){
    //設(shè)置顯示的Swagger環(huán)境
    Profiles profiles = Profiles.of("dev", "test");
    //通過(guò)  判斷是否處在自己設(shè)定的環(huán)境中
    boolean flag = environment.acceptsProfiles(profiles);
    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo())
        //這里變成了flag
        .enable(flag)
        .select()     
        .apis(RequestHandlerSelectors.basePackage("com.hxl.controller"))
        .build();
}

此時(shí)我們就發(fā)現(xiàn),如果我們走默認(rèn)的8080是沒(méi)有Swagger的,走8081才有

配置API文檔的分組

@Bean
public Docket docket(Environment environment){
    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo())
        .groupName("王木木");
    //其余配置省略
}

啟動(dòng)項(xiàng)目就發(fā)現(xiàn)我們的組別有了

如果有多個(gè)分組怎么辦?只需要配置多個(gè)docket即可

//其他的環(huán)境需要自己填
@Bean
public Docket docket1(){
    return new Docket(DocumentationType.SWAGGER_2).groupName("天");
}
@Bean
public Docket docket2(){
    return new Docket(DocumentationType.SWAGGER_2).groupName("狼");
}

實(shí)體類(lèi)配置

創(chuàng)建一個(gè)實(shí)體類(lèi)

package com.hxl.pojo;
public class User {
    public String username;
    public String password;
}

只要這個(gè)實(shí)體在請(qǐng)求接口的返回值上,就可以映射到實(shí)體項(xiàng)中

//只要我們的接口中,返回值存在實(shí)體類(lèi),他就會(huì)掃描到Swagger中
@PostMapping("/user")
public User user(){
    return new User();
}

測(cè)試

此時(shí)發(fā)現(xiàn)我們的Model中有了User。如果有中文的注釋?zhuān)恍枰诩觾蓚€(gè)注解

package com.hxl.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
//@Api("注釋")
@ApiModel("用戶實(shí)體類(lèi)")
public class User {
    @ApiModelProperty("姓名")
    public String username;
    @ApiModelProperty("密碼")
    public String password;
}

測(cè)試

常用的注解

Swagger的所有注解定義在io.swagger.annotations包下

Swagger注解簡(jiǎn)單說(shuō)明
@Api(tags = “xxx模塊說(shuō)明”)作用在模塊類(lèi)上
@ApiOperation(“xxx接口說(shuō)明”)作用在接口方法上
@ApiModel(“xxxPOJO說(shuō)明”)作用在模型類(lèi)上:如VO、BO
@ApiModelProperty(value = “xxx屬性說(shuō)明”,hidden = true)作用在類(lèi)方法和屬性上,hidden設(shè)置為true可以隱藏該屬性
@ApiParam(“xxx參數(shù)說(shuō)明”)作用在參數(shù)、方法和字段上

注解在類(lèi)上的可以看一下上面的,接下來(lái)看注解在接口方法上,以及參數(shù)上

@ApiOperation("王木木的接口")
@PostMapping("/hxl")
public String hxl(@ApiParam("用戶名")String username){
    return username;
}

在這里還可以進(jìn)行測(cè)試

小結(jié)

  • 我們可以通過(guò)Swagger給一些比較難理解的屬性或者接口增加注釋信息
  • 接口文檔實(shí)時(shí)更新
  • 可以在線測(cè)試
  • 在正式發(fā)布的時(shí)候一定要關(guān)閉Swagger《安全;節(jié)省運(yùn)行的內(nèi)存》

到此這篇關(guān)于springBoot詳解集成Swagger流程的文章就介紹到這了,更多相關(guān)springBoot Swagger內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java獲取中文拼音、中文首字母縮寫(xiě)和中文首字母的示例

    Java獲取中文拼音、中文首字母縮寫(xiě)和中文首字母的示例

    本文主要介紹了Java獲取中文拼音、中文首字母縮寫(xiě)和中文首字母,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • java并發(fā)編程專(zhuān)題(九)----(JUC)淺析CyclicBarrier

    java并發(fā)編程專(zhuān)題(九)----(JUC)淺析CyclicBarrier

    這篇文章主要介紹了java CyclicBarrier的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • java后臺(tái)實(shí)現(xiàn)支付寶對(duì)賬功能的示例代碼

    java后臺(tái)實(shí)現(xiàn)支付寶對(duì)賬功能的示例代碼

    這篇文章主要介紹了java后臺(tái)實(shí)現(xiàn)支付寶對(duì)賬功能的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Java 正確終止線程的方法

    Java 正確終止線程的方法

    這篇文章主要介紹了Java 正確終止線程的方法,幫助大家更好的理解和學(xué)習(xí)java 多線程的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-12-12
  • MyBatis中有關(guān)int和Integer的使用方式

    MyBatis中有關(guān)int和Integer的使用方式

    這篇文章主要介紹了MyBatis中有關(guān)int和Integer的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java之SpringBoot定時(shí)任務(wù)案例講解

    Java之SpringBoot定時(shí)任務(wù)案例講解

    這篇文章主要介紹了Java之SpringBoot定時(shí)任務(wù)案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 淺談Java的SPI技術(shù)

    淺談Java的SPI技術(shù)

    這篇文章主要介紹了Java的SPI技術(shù)的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Java軟件編程培訓(xùn)機(jī)構(gòu)靠譜嗎

    Java軟件編程培訓(xùn)機(jī)構(gòu)靠譜嗎

    隨著網(wǎng)絡(luò)信息化的快速發(fā)展,Java培訓(xùn)受到越來(lái)越多人的青睞,目前Java工程師的薪資水平在不斷攀升,但是有好多企業(yè)還是招不到合適的人才,為什么呢
    2017-04-04
  • 聊聊maven的pom.xml中的exclusions標(biāo)簽的作用

    聊聊maven的pom.xml中的exclusions標(biāo)簽的作用

    這篇文章主要介紹了maven的pom.xml中的exclusions標(biāo)簽的作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • CountDownLatch和Atomic原子操作類(lèi)源碼解析

    CountDownLatch和Atomic原子操作類(lèi)源碼解析

    這篇文章主要為大家介紹了CountDownLatch和Atomic原子操作類(lèi)的源碼解析以及理解應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03

最新評(píng)論