天天看點

元件分享之後端元件——用于建構 Go HTTP 服務的輕量級、慣用且可組合的路由器chi

元件分享之後端元件——用于建構 Go HTTP 服務的輕量級、慣用且可組合的路由器chi

背景

近期正在探索前端、後端、系統端各類常用元件與工具,對其一些常見的元件進行再次整理一下,形成标準化元件專題,後續該專題将包含各類語言中的一些常用元件。歡迎大家進行持續關注。

元件基本資訊

  • 元件:​​chi​​
  • 開源協定:​​MIT License​​

内容

本節我們分享一個在Golang中用于建構 Go HTTP 服務的輕量級、慣用且可組合的路由器​​chi​​

它特别擅長幫助您編寫大型 REST API 服務,這些服務可以随着項目的增長和變化而保持可維護性。​

​chi​

​​基于 Go 1.7 中引入的新​

​context​

​包建構,用于處理處理程式鍊中的信号、取消和請求範圍的值。

該項目的重點是尋找一種優雅而舒适的設計來編寫 REST API 伺服器,該設計是在為我們的公共 API 服務提供支援的 Pressly API 服務開發期間編寫的,該服務反過來為我們所有的用戶端應用程式提供支援。

chi 設計的主要考慮因素是:項目結構、可維護性、标準 http 處理程式(僅限 stdlib)、開發人員生産力以及将大型系統解構為許多小部分。核心路由器​

​github.com/go-chi/chi​

​​非常小(小于 1000 LOC),但我們還包含了一些有用/可選的子包:​​middleware​​​、​​render​​​ 和​​docgen​​。我們希望你也喜歡它!

特征

  • 輕量級- 在 ~1000 LOC 中用于 chi 路由器
  • 快速- 是的,請參閱​​基準​​
  • 100% 相容 net/http- 使用生态系統中任何相容的 http 或中間件 pkg​

    ​net/http​

  • 專為子產品化/可組合 API 設計- 中間件、内聯中間件、路由組和子路由器安裝
  • 上下文控制- 建立在新​

    ​context​

    ​包之上,提供價值鍊、取消和逾時
  • 強大的 - Pressly、CloudFlare、Heroku、99Designs 和許多其他公司的生産(見​​讨論​​)
  • 文檔生成-​

    ​docgen​

    ​自動生成從您的源到 JSON 或 Markdown 的路由文檔
  • Go.mod 支援- 從 v5 開始,支援 go.mod(請參閱​​CHANGELOG​​)
  • 沒有外部依賴- 普通 ol' Go stdlib + net/http

簡單使用案例:

1、安裝

go get -u github.com/go-chi/chi/v5      

2、使用

package main

import (
    "net/http"

    "github.com/go-chi/chi/v5"
    "github.com/go-chi/chi/v5/middleware"
)

func main() {
    r := chi.NewRouter()
    r.Use(middleware.Logger)
    r.Get("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("welcome"))
    })
    http.ListenAndServe(":3000", r)
}      

本文聲明:

元件分享之後端元件——用于建構 Go HTTP 服務的輕量級、慣用且可組合的路由器chi

88x31.png

知識共享許可協定