Irohabook
0
945

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)
}

多くのアプリケーションは次のポイントをおさえる必要がある。

  1. chi.NewRouter() で router を定義する
  2. favicon を表示する
  3. Get を表示する
  4. NotFound を表示する

一部のブラウザは favicon を get で要求するため、favicon.ico 用のビューがある。

次の記事

HTTP