亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

前后分離的契約!Swagger

2024-04-27 15:15:05
字體:
來源:轉載
供稿:網友

前后分離 

  前后端分離已經是業界所共識的一種開發/部署模式了。所謂的前后端分離,是指后端開發人員只需要定義出接口就可以了,而不需要在編寫jsp等東西,而前端開發人員也只需要專心做界面,需要數據的地方直接調用后端開發人員定義的就行了。   這樣,前后端就分別有了著自己的開發流程,構建工具,測試等。做前端的誰也不會想要用Maven或者Gradle作為構建工具,同樣的道理,做后端的誰也不會想要用Grunt或者Gulp作為構建工具。前后端僅僅通過接口來協作,這個接口可能是JSON格式的RESTFul的接口,也可能是xml的,重點是后臺只負責數據的提供和計算,而完全不處理展現。而前端則負責拿到數據,組織數據并展現的工作。這樣結構清晰,關注點分離,前后端會變得相對獨立并松耦合?!?  但有一個很頭痛的問題。比如在最后需要集成的時候,我們才發現最開始商量好的數據結構發生了變化,而且這種變化往往是在所難免的,比如:deliveryAddress字段本來是一個字符串,現在變成數組了(業務發生了變更,系統現在可以支持多個快遞地址);PRice字段變成字符串,協商的時候是number;用戶郵箱地址多了一個層級等等。這些變動在所難免,而且時有發生,這會花費大量的調試時間和集成時間,更別提修改之后的回歸測試了。   歸根結底,還是前端或者后端感知到變化的時間周期太長,不能“及時協商,盡早解決”,最終導致集中爆發。怎么解決這個問題呢?我們需要提前協商好一些契約,并將這些契約作為可以被測試的中間產品,然后前后端都通過自動化測試來檢驗這些契約,一旦契約發生變化,測試就會失敗。這樣,每個失敗的測試都會驅動雙方再次協商,有效的縮短了反饋周期,并且降低集成風險。

Swagger

  Swagger(http://swagger.io/docs/)主要提供了三個功能,Swagger Editor,Swagger Codegen,Swagger UI分別是編輯器,代碼生成器以及API文檔界面。   在Swagger Editor中,我們可以基于YAML語法定義我們的RESTful API,然后它會自動生成一篇排版優美的API文檔,并且提供實時預覽。使用Swagger Codegen能夠自動生成Mock server所需要的代碼,這樣一來前端開發就再也不用等著后端API 的實現了。除此之外,它還有一個更強大的功能,甚至能夠幫助我們自動生成不同語言的客戶端的代碼。Swagger是基于插件來實現各種不同的語言的,所以,如果已經提供的語言中沒有你正在用的,你也可以自己實現相應的插件,甚至是從源代碼級別進行定制化。

契約測試

 談到了前后端分離,那么在所難免,會遇到一些集成的問題:一撥人在全心全意的進行前端開發,另一撥人在心無旁騖的做后端開發,那么誰應該為集成買單呢?在現在這個持續集成、持續交付的年代里,我們應該如何去保證雙方不會分道揚鑣、越走越遠呢?   所以,在一開始就定一個契約就成了迫在眉睫的事情,雙方就API相關的內容,包括路徑、參數、類型等達成一致,當然,這份契約并不是一旦創建就不能修改的,而且,如果一開始沒有設計好,很有可能會頻繁的修改。這個時候,要讓雙方都能夠實時的跟蹤最新的API就成了一個難題。還好,有了Swagger后,我們可以方便的做契約測試。   簡而言之,我們需要商定一些契約,并將這些契約作為可以被測試的中間格式。然后前后端都需要有測試來使用這些契約。一旦契約發生變化,則另一方的測試會失敗,這樣就會驅動雙方協商,并降低集成時的浪費。   一個實際的場景是:前端發現已有的某個契約中,缺少了一個address的字段,于是就在契約中添加了該字段。然后在UI上將這個字段正確的展現了(當然還設置了字體,字號,顏色等等)。但是后臺生成該契約的服務并沒有感知到這一變化,當運行生成契約部分測試(后臺)時,測試會失敗了 — 因為它并沒有生成這個字段。于是后端工程師就找前端來商量,了解業務邏輯之后,他會修改代碼,并保證測試通過。這樣,當集成的時候,就不會出現UI上少了一個字段,但是誰也不知道是前端問題,后端問題,還是數據庫問題等。   而且實際的項目中,往往都是多個頁面,多個API,多個版本,多個團隊同時進行開發,這樣的契約會降低非常多的調試時間,使得集成相對平滑。   首先,我們先假設我們已經有了一份契約,可能是基于JSON格式的,有可能是基于XML格式的,這都不重要。然后,前端會根據這份契約建立一個Mock server,所有的測試都發往這個Mock server。有兩方面的原因:一是這個時候可能后臺的API還沒有開發完成;二是有可能因為網絡等其他方面的原因導致直接調用真實的后臺API會很不穩定或者很耗時。到這里,可能有人就要說了,如果后臺的API實現和之前約定的并不一樣,怎么能保證到了集成的時候雙方還能很順利的集成呢?其實這個問題并不難,只需要讓前端的測試定期連接真實的API執行一遍就能盡早的發現差異性。比方說,在我們平常的build pipeline上添加一個job,讓這些測試每天在午夜里連著真實的API執行。如果,第二天發現這些測試有的失敗了,那么就需要和開發后臺API的人員進行一次溝通了,很有可能由于真實的業務邏輯發生了變化,API在實現的時候,已經和之前的契約不一致了,如果是這樣,那么相應的測試和契約定義就需要更新以滿足最新的業務需求。

參考: http://www.cnblogs.com/whitewolf/p/4686154.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人av番号网| 68精品久久久久久欧美| 色噜噜狠狠狠综合曰曰曰| 午夜精品国产精品大乳美女| 精品福利免费观看| 亚洲欧美资源在线| 国产乱肥老妇国产一区二| 福利微拍一区二区| 91视频国产一区| 少妇高潮久久77777| 久久色精品视频| 亚洲欧美三级在线| 亚洲天堂男人的天堂| 精品久久久视频| 亚洲天堂日韩电影| 精品国产一区二区三区在线观看| 成人福利网站在线观看| 日韩在线观看网址| 91精品国产色综合久久不卡98| 精品在线欧美视频| 日韩风俗一区 二区| 国产精品v日韩精品| 色偷偷88888欧美精品久久久| 欧美日韩亚洲成人| 欧美成aaa人片免费看| 在线日韩av观看| 欧美黑人视频一区| 欧美激情亚洲国产| 68精品久久久久久欧美| 日韩免费不卡av| 在线成人激情黄色| 亚洲欧洲在线视频| 中文国产成人精品| www.欧美视频| 精品小视频在线| 欧美一区二粉嫩精品国产一线天| 日韩精品视频在线免费观看| 日韩在线播放视频| 欧美成人h版在线观看| 国产精品激情av在线播放| 欧美极品少妇xxxxⅹ裸体艺术| xxxxxxxxx欧美| 色噜噜亚洲精品中文字幕| 亚洲天堂av在线免费| 欧美成人免费观看| 中文字幕日韩欧美在线| 午夜精品久久久久久久99热浪潮| 自拍视频国产精品| 精品国产91久久久久久老师| 亚洲成人xxx| 国产69精品99久久久久久宅男| 欧美xxxx18性欧美| 久久在线精品视频| 亚洲欧美国产制服动漫| 日韩大胆人体377p| 97视频在线观看亚洲| 日韩欧中文字幕| 日韩小视频在线| 在线观看国产成人av片| 国产91色在线| 国产精品久久久精品| 国产国语刺激对白av不卡| 一区二区三区国产视频| 欧美日韩另类视频| 国产精品日韩专区| 黄色一区二区在线观看| 国产精品久久久久9999| 色狠狠av一区二区三区香蕉蜜桃| 97久久久免费福利网址| 久久久国产视频91| 日韩黄色av网站| 久久久久久中文| 欧美日韩国产色视频| 国产成人精品一区二区在线| 97视频在线观看免费高清完整版在线观看| 欧美一区深夜视频| 欧美大学生性色视频| 成人免费视频a| 97视频在线观看成人| 欧美大片网站在线观看| 国产精品91免费在线| 日本精品久久久| 中文字幕v亚洲ⅴv天堂| 亚洲三级 欧美三级| 国产欧美日韩高清| 日韩成人激情在线| 亚洲成人黄色网址| 久久手机免费视频| 深夜成人在线观看| 美女精品久久久| 日韩极品精品视频免费观看| 韩日精品中文字幕| 日韩成人在线视频网站| 欧美怡红院视频一区二区三区| 国模精品系列视频| 成人国产精品久久久久久亚洲| 亚洲精品自拍第一页| 91av视频导航| 欧美激情精品久久久| 北条麻妃久久精品| 久久久这里只有精品视频| 成人精品一区二区三区电影黑人| 欧美视频裸体精品| 精品国产视频在线| 97国产suv精品一区二区62| 美女久久久久久久| 97久久久免费福利网址| 欧美激情videos| 国产精品久久久久久久久久久新郎| 亚洲美女喷白浆| 97视频在线观看免费| 羞羞色国产精品| 亚洲国产中文字幕在线观看| 久99久在线视频| 日韩中文字幕久久| 亚洲成av人乱码色午夜| 91sa在线看| 精品视频偷偷看在线观看| www.国产精品一二区| 中文字幕亚洲欧美一区二区三区| 国产91精品最新在线播放| 久久激情视频免费观看| 亚洲偷欧美偷国内偷| 亚洲乱码国产乱码精品精天堂| 久久久91精品国产| 最近2019中文字幕mv免费看| 国产mv免费观看入口亚洲| 91精品视频在线免费观看| 奇米四色中文综合久久| 久久精品中文字幕电影| 国产精品精品视频一区二区三区| 欧美性在线视频| 成人有码视频在线播放| 欧美精品手机在线| 91成人福利在线| 一区二区三区回区在观看免费视频| 成人国产精品一区二区| 国产成人aa精品一区在线播放| 一本色道久久综合亚洲精品小说| 成人美女免费网站视频| 8x海外华人永久免费日韩内陆视频| 久久97精品久久久久久久不卡| 亚洲a中文字幕| 欧美精品18videos性欧| 亚洲日本欧美日韩高观看| 精品亚洲男同gayvideo网站| 97av在线视频免费播放| 66m—66摸成人免费视频| 国产中文字幕日韩| 在线a欧美视频| 国产精品国产三级国产专播精品人| 欧美精品激情blacked18| 综合网日日天干夜夜久久| 国产成人精品国内自产拍免费看| 奇米四色中文综合久久| 久久精品视频在线播放| 性日韩欧美在线视频| 欧美色播在线播放| 538国产精品一区二区在线| 亚洲国产中文字幕在线观看| 国产精品自在线| 欧美日韩高清区| 亚洲乱亚洲乱妇无码| 国外成人在线直播|