久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      優(yōu)雅的實(shí)現(xiàn) Golang REST API 架構(gòu)

      優(yōu)雅的實(shí)現(xiàn) Golang REST API 架構(gòu)

      有一種說法,golang 編寫的 API 不能像其他語言那樣簡(jiǎn)單和通用。但實(shí)際上,我遇到很多 REST API 的代碼,非常多的抽象,使得代碼庫變得混亂和復(fù)雜,最終傷害了可讀性和可維護(hù)性。

      這一系列,我們將通過如何建立一個(gè)產(chǎn)品級(jí)的 REST API TODO 列表,一個(gè)可持續(xù)擴(kuò)展架構(gòu),從路由和代碼接口開始,然后添加一個(gè) mongo 的數(shù)據(jù)庫和一個(gè) badger 數(shù)據(jù)層,然后是授權(quán)協(xié)議層(OAuth 2.0)

      在這一系列中我們將使用 chi 路由。

      優(yōu)雅的實(shí)現(xiàn) Golang REST API 架構(gòu)

      為什么選擇用 Chi ,而不是用標(biāo)準(zhǔn)庫或者 Gin 或者 router-x 進(jìn)行路由?

      嗯,其實(shí)選擇用什么并不重要。無論你使用什么來進(jìn)行路由,本系列中討論的概念都將是有用的。但是有下面的這些優(yōu)點(diǎn)可以讓我認(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è)計(jì) – 中間件,內(nèi)聯(lián)中間件,路由組和子路由器安裝

      • 沒有外部依賴—純粹的就是 Go 1.7+ stdlib + net / http

      • 強(qiáng)悍?—?有很多公司正在使用,比如:Pressly,CloudFlare,Heroku,99Designs

      • 輕量級(jí)?—?cloc'd in ~1000 LOC for the chi router

      • 速度很快

      我最喜歡的是,你為其他 net / http 兼容路由器編寫的舊的 http 處理程序和中間件也可以在正常運(yùn)行。

      讓我們開始吧

      首先,我們創(chuàng)建一個(gè) main.go 。我們程序的基礎(chǔ)(或者說中心元件 ?)

      優(yōu)雅的實(shí)現(xiàn) Golang REST API 架構(gòu)

      上面的代碼是一些最佳實(shí)踐的重點(diǎn)

      1. 用一個(gè)單獨(dú)的包來實(shí)現(xiàn)路由的邏輯,并將它們分好組,然后安裝(mount) 它們:

      r.Mount("/api/todo", todo.Routes())

      1. 給 API 打上版本,這樣你就可以對(duì) api 進(jìn)行更新時(shí),不會(huì)破壞舊的客戶端:

      router.Route("/v1", ….)

      1. 使用中間件作為擴(kuò)展。使用了非常多路由的代碼是非常笨重的,其實(shí)可以變成鏈接的中間件,像:授權(quán),設(shè)置響應(yīng)頭部,壓縮,請(qǐng)求日志,限速等。

      筆者(基于 Ajinkya 在評(píng)論中提到的問題,我會(huì)

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)