<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
這個問題就牽涉到技術的更新迭代了,在之前的後端時代,前端只需要管理靜態頁面,而後端需要使用模板引擎(JSP等)去得資料並加以處理,最後顯示出資料。但是隨著時代的發展,開發慢慢進入了前後端分離的時代,前端和後端分成了兩個相對獨立的團隊來合作開發,這就造成了一個問題:前後端整合聯調的時候,前後端人員無法做到“及時協商,儘早解決”,最終造成問題的集中爆發。
既然已經發現問題,那麼就需要使用一種解決方案來避免這個問題的干擾。做過一個完整專案的小夥伴應該都有所瞭解,前後端之間的共同作業基本上都在api介面和資料傳輸上,那麼如果api介面能夠統一、資料的格式能夠一致,那麼問題也就迎刃而解了。
於是Swagger應運而生,Swagger可以根據在程式碼中使用自定義的註解來生成介面檔案,這樣做的好處是在開發介面時可以通過swagger將介面檔案定義好,方便前後端團隊之間的共同作業,同時也方便以後的維護。
<!--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(結束)-->
@Configuration @EnableSwagger2 // 開啟Swagger2 public class SwaggerConfig { }
如果只是使用設定類開啟Swagger的話,它的底層會有一些DEFAULT(預設)的值,開啟之後就可以使用網址http://localhost:8080/swagger-ui.html來存取這個Swagger的檔案介面。
當然,既然有預設的設定,我們就可以實現客製化化的設定覆蓋,依然是在這個設定類中進行修改
@Configuration @EnableSwagger2 // 開啟Swagger2 public class SwaggerConfig { /** *用於客製化化設定Docket的bean範例 */ @Bean public 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介面
這一部分的工作也是在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()); }
使用.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的分組之前,有一個預設的default分組,分組個數的多少就取決於SwaggerConfig 設定類中有多少個Docket 範例,值得注意的是:不能出現同名的分組,即使是未命名的分組(也就是default)也不能重複出現,否則就會報java.lang.IllegalStateException異常
controller層使用到的註解
entity層使用到的註解
model裡面是否有這個實體類,並不是取決於是否使用了哪個註解,而是方法的返回值是否包含這個實體類物件,也就是看有沒有一個方法return了這個物件。
這裡的使用和postman幾乎一樣,可以借鑑學習
到此這篇關於Java Swagger使用教學的文章就介紹到這了,更多相關Java Swagger內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45