您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“如何定制yaml文件管理api并基于yaml文件生成完整程序”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何定制yaml文件管理api并基于yaml文件生成完整程序”吧!
1. api管理方式背景
隨著項目團隊不斷地規(guī)范,開發(fā)流程的每一步都在不斷的變化,變得更加高效并且方便管理;api管理也經(jīng)歷了不少的變化,主要變化從上到下演進:
編寫后端接口api,從status的action到springmvc的@RequestMapping,這些框架的確可以幫我們完成后端接口的編寫,但對于前后端分離的項目,還需要編寫項目組制定的接口文檔;我相信,沒多少程序員寫完接口后還想寫接口文檔的。
由于項目組開發(fā)系統(tǒng)比較多,為了統(tǒng)一管理公司內(nèi)部所有系統(tǒng)的接口文檔,這個時候有的公司會定制化自己的接口文檔管理應用,通過這個應用可以簡單的實現(xiàn)在網(wǎng)站上直接編寫接口文檔信息,無須考慮接口文檔樣式等等,這樣做的確比上一種好一點,通過對定制化這個網(wǎng)站,我們可以做到在線調(diào)試接口情況、分版本管理、分配api管理權(quán)限。API管理-使用開源xxl-api項目管理接口
在項目中集成swagger并在接口上加上api信息的注解,并通過swagger-ui.html界面進行api接口的查看和調(diào)試,詳細請參考:API管理-基于SpringBoot項目集成swagger實現(xiàn)接口文檔自動生成,如果覺得這套ui不友好,沒關(guān)系,可以換,API管理-舍棄springfox-swagger-ui,采用功能更加豐富的swagger-bootstrap-ui
通過上面一種就基本可以完成api管理操作了,但這樣的swagger管理起來也存在代碼侵入性太高,為了達到目的還需要反復的調(diào)整接口注解或參數(shù);既然存在問題,閱讀完這篇文章你就會學會:如何定制yaml文件管理api并基于yaml文件生成client端、server端、springboot完整程序,接下來進入主題。
2. 需要了解幾個概念
swagger 2.0和open api 3.0規(guī)范,其實就是規(guī)范對于的yaml文件格式定義,不同的情況下可以通過特定的規(guī)范進行不同后端代碼生成,對于swagger 2.0和open api 3.0規(guī)范生成代碼的插件也有好多個,swagger 2.0和open api 3.0還支持互轉(zhuǎn),請參考:swagger2openapi。
這里先介紹基于swagger 2.0生成后端代碼,試過open api 3.0去做,但插件不太給力,沒有達到我想要的效果,沒法達到:基于yaml文件生成client端、server端、springboot完整程序;
滿足swagger 2.0文件有json、yaml二種格式的,所以以后我們只要學會編寫這種yaml或json文件編寫規(guī)范就可以對接口進行管理。
3. 使用swagger-codegen完成基于yaml文件生成client端、server端、springboot完整程序
請先閱讀,這篇文章,寫的不錯:spring boot項目使用swagger-codegen生成服務間調(diào)用的jar包,百度了很多帖子,就這篇文章給了我想要的效果。
通過這種方法我可以生成一個只帶NameApi的接口的程序("interfaceOnly" : "true"),通過對這個程序的打包依賴到項目中,就可以完成對api管理,每次更新api接口只需要編寫好yaml重新生成一下jar并依賴到項目中就行,這樣還可以減少swagger相關(guān)注解的侵入性。通過這種方式只用在controller上實現(xiàn)對于的jar中的接口,還不需要調(diào)整service和mapper中的邏輯,service和mapper層還可以通過之前方式直接生成與數(shù)據(jù)庫交互的通用接口。
除此之外swagger-codegen還可以通過"library" : "feign"生產(chǎn)我們想要的客戶端代碼(jar),這里的客戶端代碼就是一些封裝過的工具,可以通過指定方式去和server交互,如:sso-client.jar就是負責與sso-server進行交互的。
到此,相信大家對“如何定制yaml文件管理api并基于yaml文件生成完整程序”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。