久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放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)雅的實現(xiàn) Golang REST API 架構(gòu)

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

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

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

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

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

      為什么選擇用 Chi ,而不是用標準庫或者 Gin 或者 router-x 進行路由?

      嗯,其實選擇用什么并不重要。無論你使用什么來進行路由,本系列中討論的概念都將是有用的。但是有下面的這些優(yōu)點可以讓我認為 Chi-router 比大多數(shù)替代方案更優(yōu)越:

      • net/http 標準庫 100% 兼容—可以在 Go 生態(tài)系統(tǒng)中使用任何與net / http 兼容的 http 或中間件 pkg

      • 專為模塊化/可組合 API 設計 – 中間件,內(nèi)聯(lián)中間件,路由組和子路由器安裝

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

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

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

      • 速度很快

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

      讓我們開始吧

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

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

      上面的代碼是一些最佳實踐的重點

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

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

      1. 給 API 打上版本,這樣你就可以對 api 進行更新時,不會破壞舊的客戶端:

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

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

      筆者(基于 Ajinkya 在評論中提到的問題,我會

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