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