search
New サムネイル Pythonで同じディレクトリにあるファイルを開く(path.dirname(__file__) New サムネイル PythonでSchema.orgのDate形式(ISO 8601)を扱う New サムネイル 分断するメディアとインターネットのユーザー:ライトノベル、キズナアイ、TikTokに思うこと

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 用のビューがある。

広告

広告

広告

コンピューター コンピューター
プログラミング プログラミング
数学 数学
英語 英語
国語 国語
理科 理科
社会 社会

Python入門

Python入門

化学入門

化学入門

漢字辞典

漢字辞典

整数辞典

漢字辞典

Lord Candy

Lord Candy