有一種說法,golang 編寫的 API 不能像其他語言那樣簡單和通用。但實際上,我遇到很多 REST API 的代碼,非常多的抽象,使得代碼庫變得混亂和復(fù)雜,最終傷害了可讀性和可維護(hù)性。
這一系列,我們將通過如何建立一個產(chǎn)品級的 REST API TODO 列表,一個可持續(xù)擴(kuò)展架構(gòu),從路由和代碼接口開始,然后添加一個 mongo 的數(shù)據(jù)庫和一個 badger 數(shù)據(jù)層,然后是授權(quán)協(xié)議層(OAuth 2.0)
在這一系列中我們將使用 chi 路由。
嗯,其實選擇用什么并不重要。無論你使用什么來進(jìn)行路由,本系列中討論的概念都將是有用的。但是有下面的這些優(yōu)點可以讓我認(rèn)為 Chi-router 比大多數(shù)替代方案更優(yōu)越:
和 net/http
標(biāo)準(zhǔn)庫 100% 兼容---可以在 Go 生態(tài)系統(tǒng)中使用任何與net / http 兼容的 http 或中間件 pkg
專為模塊化/可組合 API 設(shè)計 - 中間件,內(nèi)聯(lián)中間件,路由組和子路由器安裝
沒有外部依賴---純粹的就是 Go 1.7+ stdlib + net / http
強(qiáng)悍?---?有很多公司正在使用,比如:Pressly,CloudFlare,Heroku,99Designs
輕量級?---?cloc'd in ~1000 LOC for the chi router
速度很快
我最喜歡的是,你為其他 net / http 兼容路由器編寫的舊的 http 處理程序和中間件也可以在正常運(yùn)行。
首先,我們創(chuàng)建一個 main.go 。我們程序的基礎(chǔ)(或者說中心元件 ?)
r.Mount("/api/todo", todo.Routes())
router.Route("/v1", ....)
筆者(基于 Ajinkya 在評論中提到的問題,我會更多的闡述 walk 方法):
chi 路由有一個方法叫做 walk。這個方法接收的參數(shù):
A router
A callback.
每個被定義的路由都會被回調(diào),并且接收 4 個參數(shù):
路由定義的方法
實際路由的字符串
處理器(函數(shù)),處理給定路由的請求
給定路由中,定義過的中間件列表(中間件是一個比較簡單的函數(shù),它會在處理器被調(diào)用前調(diào)用,所以它們才會被使用在請求處理之前,授權(quán)等)
以我為例,我將簡單地輪詢路由并且打印所有被定義的路由。從而讓我對所有可用的路由一目了然。
todo 包有一個返回所有路由的方法。這些路由都是寫在 main.go 文件中。 實際上我通常會把這些路由寫在一個叫 routes.go 的文件中, 這樣會很容易在包里找到.
處理程序具有 func (w http.ResponseWriter,r *http.Request)
的函數(shù)簽名,這意味著這處理程序和你使用標(biāo)準(zhǔn)庫的 net/http 寫法沒有不同。
使用 render.JSON,一個 encoding/json 的封裝, 它會自動轉(zhuǎn)義你 JSON 響應(yīng)中所有的 html,并設(shè)置 content-type 為 application/json
你被它有多簡單嚇到了嗎?可以在 GitHub 上查看這個項目 https://github.com/tonyalaribe/todoapi/tre....
在我們本系列的下篇文章中, 我們會繼續(xù)對配置和共享狀態(tài)的支持。 大多數(shù)項目通常都需要額外的配置,例如數(shù)據(jù)庫連接,等等。 我們將會在下篇文章里討論這個。
以上就是優(yōu)雅的實現(xiàn) Golang REST API 架構(gòu)的詳細(xì)內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司其它相關(guān)文章!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文標(biāo)題:Golang實現(xiàn)RESTAPI架構(gòu)-創(chuàng)新互聯(lián)
文章分享:http://vcdvsql.cn/article22/hohjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)站策劃、軟件開發(fā)、企業(yè)建站、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容