Golangのchiを使ったrouterの例
Go で web application を開発するとき、chi は最良の router になる。gin は Go の gin はルーティングに難がある の解説にあるようにいくつかの欠点がある。
chi を使った典型的な router
Linux にデプロイするためのコードを除くと、メイン関数の大部分は chi の router になる。
package main
import (
"example/utils"
"example/views"
"github.com/go-chi/chi"
"net/http"
"os"
"path/filepath"
)
func main() {
r := chi.NewRouter()
w, _ := os.Getwd()
f := filepath.Join(w, "static")
utils.FileServer(r, "/static", http.Dir(f))
r.Get("/favicon.ico", views.GetFavicon)
r.Get("/", views.GetHome)
r.Get("/{category}", views.GetCategory)
r.Get("/{category}/{article}", views.GetArticle)
r.Get("/404", views.GetNotFound)
r.NotFound(views.GetNotFound)
r.Post("/post", views.PostArticle)
_ = http.ListenAndServe(":8080", r)
}
多くのアプリケーションは次のポイントをおさえる必要がある。
- chi.NewRouter() で router を定義する
- favicon を表示する
- Get を表示する
- NotFound を表示する
一部のブラウザは favicon を get で要求するため、favicon.ico 用のビューがある。