【Swagger】看這一篇就夠了

在這里插入圖片描述

??各位小伙伴們大家好,歡迎跟著小扎扎一起學習【Swagger】這門技術,在本片博客中我對B站狂神的Swagger教程進行一個總結,鑒于 看到就是學到、學到就是賺到 精神,這波依然是血賺 ┗|`O′|┛

💡Swagger知識點速覽

  • 🔊 Swagger簡介
    • 🔉 為什么使用Swagger
  • 🔊 Swagger的配置
    • 🔉 Spring boot集成Swagger
      • 🔈 新建一個spring boot項目
      • 🔈 導入兩個依賴
      • 🔈 配置Swagger
    • 🔉 配置Swagger可掃描的接口
    • 🔉 控制Swagger的開關
    • 🔉 設置Swagger的分組
    • 🔉 Swagger的各種注釋
  • 🔊 使用Swagger接口測試

🔊 Swagger簡介

🔉 為什么使用Swagger

??這個問題就牽涉到技術的更新迭代了,在之前的后端時代,前端只需要管理靜態頁面,而后端需要使用模板引擎(JSP等)去得數據并加以處理,最后顯示出數據。但是隨著時代的發展,開發慢慢進入了前后端分離的時代,前端和后端分成了兩個相對獨立的團隊來合作開發,這就造成了一個問題:前后端集成聯調的時候,前后端人員無法做到“及時協商,盡早解決”,最終造成問題的集中爆發。

??既然已經發現問題,那么就需要使用一種解決方案來避免這個問題的干擾。做過一個完整項目的小伙伴應該都有所了解,前后端之間的協作基本上都在api接口和數據傳輸上,那么如果api接口能夠統一、數據的格式能夠一致,那么問題也就迎刃而解了。

??于是Swagger應運而生,Swagger可以根據在代碼中使用自定義的注解來生成接口文檔,這樣做的好處是在開發接口時可以通過swagger將接口文檔定義好,方便前后端團隊之間的協作,同時也方便以后的維護。

🔊 Swagger的配置

🔉 Spring boot集成Swagger

🔈 新建一個spring boot項目

在這里插入圖片描述

🔈 導入兩個依賴

<!--Swagger(開始)-->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version>
</dependency>
<!--Swagger(結束)-->

🔈 配置Swagger

@Configuration
@EnableSwagger2     // 開啟Swagger2
public class SwaggerConfig {
}

??如果只是使用配置類開啟Swagger的話,它的底層會有一些DEFAULT(默認)的值,開啟之后就可以使用網址http://localhost:8080/swagger-ui.html來訪問這個Swagger的文檔界面。在這里插入圖片描述??當然,既然有默認的配置,我們就可以實現定制化的配置覆蓋,依然是在這個配置類中進行修改

@Configuration
@EnableSwagger2     // 開啟Swagger2
public class SwaggerConfig {/***用于定制化配置Docket的bean實例*/@Beanpublic Docket Docket() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(ApiInfo());}/*** 定制化信息的主要設置處*/private ApiInfo ApiInfo() {// 作者的個人信息Contact contact = new Contact("作者的姓名", "作者的個人社交主頁", "作者的郵箱");return new ApiInfo("標題:Swagger的測試接口文檔","簡介:這是一段簡介,關于接口文檔的簡介","版本號:1.0","網頁:這是一個網頁鏈接",contact,"Apache 2.0","http://www.apache.org/licenses/LICENSE-2.0",new ArrayList<>());}
}

??修改之后的頁面信息就會有一些不一樣,restart項目之后重新訪問ui界面
在這里插入圖片描述

🔉 配置Swagger可掃描的接口

??這一部分的工作也是在SwaggerConfig配置類中實現,主要就是配置哪些api接口會被Swagger生成接口文檔,生成文檔的api就會在swagger的ui界面上顯示。通過以下.apis和.paths的配置,達到的效果就是之后在com.xiaochen.swagger.controller包下的映射路徑為/hello的才會生成對應的接口文檔

 @Bean
public Docket Docket() {return new Docket(DocumentationType.SWAGGER_2).select()/*** apis就是配置哪些api可以被掃描* 主要參數可以包括:*  - RequestHandlerSelectors.basePackage():指定可以掃描的包 參數是包(package)名*  - RequestHandlerSelectors.any():掃描所有*  - RequestHandlerSelectors.none():都不掃描*  - RequestHandlerSelectors.withClassAnnotation():掃描類上注解  參數是注解類的反射對象,eg:@RestController.class*  - RequestHandlerSelectors.withMethodAnnotation()掃描方法上注解  參數是注解類的反射對象,eg:@RequestMapping.class*/.apis(RequestHandlerSelectors.basePackage("com.xiaochen.swagger.controller"))/*** paths就是配置哪些映射路徑下的api可以被掃描* 主要參數可以包括:*  - PathSelectors.ant():指定映射路徑 主要就是斜杠+單詞或者通配符*  - PathSelectors.any():掃描所有*  - PathSelectors.none():都不掃描*  - PathSelectors.regex():掃描符合正則的所有路徑*/.paths(PathSelectors.ant("/hello")).build().apiInfo(ApiInfo());
}

🔉 控制Swagger的開關

??使用.enable可以控制Swagger的開關,如果關閉了Swagger的話就會導致ui界面無法打開,也就無法查看接口文檔
在這里插入圖片描述??那么該如何實現只在開發和測試階段開啟Swagger呢?首先應該先預設一下想要開啟的項目環境,通過Environment 對象來監聽項目的環境與預設的是否一致,最后使用.enable控制Swagger的開關

@Bean
public Docket Docket(Environment environment) {// 預設的項目環境(可設置多個)Profiles profiles = Profiles.of("dev", "test");// 監聽項目的環境與預設的是否一致boolean flag = environment.acceptsProfiles(profiles);return new Docket(DocumentationType.SWAGGER_2).enable(flag);
}

🔉 設置Swagger的分組

??在沒有設置Swagger的分組之前,有一個默認的default分組,分組個數的多少就取決于SwaggerConfig 配置類中有多少個Docket 實例,值得注意的是:不能出現同名的分組,即使是未命名的分組(也就是default)也不能重復出現,否則就會報java.lang.IllegalStateException異常在這里插入圖片描述

🔉 Swagger的各種注釋

controller層使用到的注解

  • @ApiOperation(“注釋”):加在方法上,注釋這個方法
  • @ApiParam(“注釋”):加在參數前,注釋這個參數

entity層使用到的注解

  • @ApiModel(“注釋”):加在實體類上,注釋整個實體類
  • @ApiModelProperty(“注釋”):加在實體類字段上,注釋這個字段

在這里插入圖片描述
??model里面是否有這個實體類,并不是取決于是否使用了哪個注解,而是方法的返回值是否包含這個實體類對象,也就是看有沒有一個方法return了這個對象。

🔊 使用Swagger接口測試

在這里插入圖片描述
這里的使用和postman幾乎一樣,可以借鑒學習

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534992.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534992.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python mockito arg_that_wqingxiao

偶然間在脈脈上看到了一道頭條的算法面試題按照題目的理解&#xff0c;簡單的寫了一個html網頁pool開始{{index}}{{index}}var vm new Vue({el: #vue_det,data: {list: [],i: 0},methods: {details: function () {return this.site " - 學的不僅是技術&#xff0c;更是夢…

用python畫大雄_python制作斗圖生成器

網上各種帶文字的表情圖片都被大家玩壞了&#xff0c;今天就和大家一起用 python 親自做一個帶字表情圖片生成器。 不知道大家有沒有看到網上有很多人都在說 "人生苦短&#xff0c;我用 python"&#xff0c;這句話我之前也不是很理解&#xff0c;覺得人生苦短和用pyt…

【spring cloud】(一)使用idea創建可相互調用的多模塊應用

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的spring cloud專欄&#xff0c;在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;spr…

epson彩色打印機加墨水_愛普生打印機墨盒如何加墨?

展開全部掌握以下幾點步驟&#xff0c;即可輕松加墨。1、首先&#xff0c;從打印機上取下墨盒&#xff0c;32313133353236313431303231363533e4b893e5b19e31333365646234這里就不好做介紹了&#xff0c;取下墨盒的方法因機而異。將墨盒上的一層貼紙撕掉&#xff0c;并拿出所需材…

python字符串百分號_Python字符串格式化的2種方法

本文介紹了Python字符串格式化&#xff0c;主要有兩種方法&#xff0c;分享給大家&#xff0c;具體如下 用于字符串的拼接&#xff0c;性能更優。 字符串格式化有兩種方式&#xff1a;百分號方式、format方式。 百分號方式比較老&#xff0c;而format方式是比較先進的&#xff…

【踩坑,已解決】spring cloud刪除子模塊后創建同名模塊時遇到的刪除不凈,java、resources包失效,java、resources包被標記為模塊等問題

&#x1f4a1;問題速覽&#x1f4cc; 問題復現&#x1f4cc; 沒有任何操作&#xff0c;model又出現了&#x1f4cc; 模塊重建后java、resources包失效&#x1f4cc; 模塊重建后java、resources包被標記為了模塊&#x1f4cc; 問題復現 本人是在跟著B站尚硅谷的視頻練習Spring c…

藍牙掃描過程解析_智慧定位系統之藍牙網關在室內定位技術的原理淺析-新導智能...

藍牙室內定位技術是利用在室內安裝的若干個藍牙局域網接入點&#xff0c;把網絡維持成根據多用戶的基礎網絡連接形式&#xff0c;并確保藍牙局域網接入點始終是這個微網的主設備&#xff0c;然后經過丈量信號強度對新加入的盲節點進行三角定位。蘇州新導實時定位體系(RTLS)和室…

【spring cloud】(二)服務的注冊發現——Eureka

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的spring cloud專欄&#xff0c;在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;spr…

python選擇題題庫百度文庫_大學Python程序題題庫

程序設計 題目&#xff1a;補充 fun 函數&#xff0c;其功能是判斷一個整數是否是素數&#xff0c;在主 函數 main 中輸入一個整數&#xff0c;調用該 fun 函數進行判斷并輸 出結果。 要求&#xff1a;使用 math 相關函數 import math def fun(n): i,w2,0 if n<1: w1 while …

新手攻略熔爐_我的世界攻略:生存模式新手攻略

《我的世界》(英文:《minecraft》)是一款風靡全球的高自由度沙盒游戲&#xff0c;由瑞典MojangAB和4J Studios開發。國際版由微軟Mojang工作室開發&#xff0c;中國版由網易代理。Minecraft著重于讓玩家去探索、交互&#xff0c;并且改變一個由一立方米大小的方塊動態生成的地圖…

【spring cloud】(三)服務調用——Ribbon、OpenFeign

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的spring cloud專欄&#xff0c;在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;服務…

c語言斐波那契數列_劍指Offer-10-I.斐波那契數列

題目題目描述寫一個函數&#xff0c;輸入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;數列的第 n 項。斐波那契數列的定義如下&#xff1a; F(0) 0, F(1) 1F(N) F(N - 1) F(N - 2), 其中 N > 1. 斐波那契數列由 0 和 1 開始&#xff0c;之后的斐波那契數…

mysql 導入 mssql_MySQL(csv,text)導入mssql使用方法

MySQL(csv,text)導入mssql是非常的簡單了但是在導入過程中會碰到text字段問題了&#xff0c;下面我們就來看一篇關于MySQL(csv,text)導入mssql使用方法吧&#xff0c;具體的操作細節如下所示。分兩步處理&#xff0c;第一步是將csv導入到mysql。沒有使用mssql自帶客戶端的導入功…

c# mvvm模式獲取當前窗口_AWTK-MVVM 介紹

MVVM(Model-View-ViewModel)介紹8.1 分離用戶界面和業務邏輯在開發應用程序時&#xff0c;要把用戶界面和業務邏輯分離開來&#xff0c;這是每個程序員都知道的常識。分離用戶界面和業務邏輯有幾個重要的好處&#xff1a;有利于隔離變化。用戶界面是最容易變化的&#xff0c;易…

【spring cloud】(三)服務降級——Hystrix

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的spring cloud專欄&#xff0c;在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;服務…

mysql高級查詢教程_MYSQL高級查詢

實際開發中&#xff0c;經常需要對某些數據進行統計&#xff0c;比如&#xff0c;統計某個字段的最大值、最小值、平均值等。MySQL中&#xff0c;提供了一些函數來實現這些功能聚合函數COUNT()——返回某列的行數SUM()——返回某列值的和AVG()——返回某列的平均值MAX()——返回…

【dubbo】(一) dubbo是什么?

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的dubbo專欄&#xff0c;在這個系列專欄中我對B站尚硅谷雷神的dubbo教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;dubbo知識點速覽&a…

axios安裝_Vue腳手架安裝,與基本語法(干貨)

首先&#xff0c;這篇Vue文章是為了下一篇我整合springbootvue前后分離的小demo&#xff0c;這兩天整理好會上傳哈哈1. Node.js安裝1.1 下載安裝在node.js 官網下載&#xff0c; 根據自己電腦系統安裝&#xff0c;一直點下一步即可1.2 測試安裝是否成功WindowsR打開cmd窗口&…

mysql port range_MySQL 數據庫常見調優方法及參數設置_MySQL

1. 關閉 SELinuxvim /etc/selinux/config 更改 SELINUXenforcing 為 SELINUXdisabled2. 更改 IO Schedule, 對于 SSD 硬盤無需更改echo deadline > /sys/block/sda/queue/scheduler3. 更改 ulimitvim /etc/security/limits.conf* soft nofile 65535* hard nofile 65535roo…

base64 能放數組里面么_數組:總結篇

我們做個總結吧數組理論基礎數組是非常基礎的數據結構&#xff0c;在面試中&#xff0c;考察數組的題目一般在思維上都不難&#xff0c;主要是考察對代碼的掌控能力也就是說&#xff0c;想法很簡單&#xff0c;但實現起來 可能就不是那么回事了。首先要知道數組在內存中的存儲方…