HTTP

Go 標準ひょうじゅんライブラリ net/http パッケージリファレンス。

HTTP Server - Before 1.22 vs After 1.22

HTTP Functions 比較

Featurehttp.HandlerFunchttp.HandleFunchttp.Handlerhttp.Handle
TypeFunction typeFunctionInterfaceFunction
Main use関数かんすうを Handler に変換へんかんhandler 関数かんすう登録とうろくhandler インターフェースを定義ていぎhandler を登録とうろく
ImplementationServeHTTP メソッドを実装じっそうhttp.Handle をServeHTTP メソッドを実装じっそう直接ちょくせつ使用しよう
Parametersfunc(ResponseWriter, *Request)pattern, func(ResponseWriter, *Request)-pattern, Handler
Common use casesミドルウェア、かた変換へんかんシンプルなルートの素早すばや登録とうろくカスタム複雑ふくざつハンドラ任意にんいの Handler 実装じっそう登録とうろく
Flexibilityたかちゅうたかたか
Direct API endpoint registrationNoYesNoYes
Customizable logicYesYesYesYes

Use Cases

  • Links

  • Global Middleware必要ひつよう場合ばあいHandler使用しよう

  • Router Level - Middleware必要ひつよう場合ばあいHandlerFunc使用しよう

  • シンプルなルート処理しょりは、HandleFunc直接ちょくせつ使用しよう

Handler インターフェース

struct で Handler インターフェースを実装じっそう

type UserHandler struct {
    db        *sql.DB       // データベース接続
    cache     *redis.Client // Redis クライアント
    apiKey    string        // API キー
    userCount int           // ユーザーカウンター
}

適用てきよう場面ばめん

  • 設定せってい保持ほじする必要ひつようがある(データベース接続せつぞく、キャッシュクライアントなど)
  • 状態じょうたい共有きょうゆうする必要ひつようがある(カウンター、キャッシュなど)
  • 依存いぞんせい注入ちゅうにゅう必要ひつよう
  • 複雑ふくざつ内部ないぶ状態じょうたい維持いじする必要ひつようがある

Middleware Chain

  • ロギングミドルウェア
  • 認証にんしょうチェックミドルウェア
  • あたらしいミドルウェアを簡単かんたん追加ついか可能かのう

API Router Group

  • 統一とういつされたパスプレフィックス
  • 統一とういつされたミドルウェア適用てきよう
  • 簡略化かんりゃくかされたルート登録とうろく

HandlerFunc 型

関数かんすうかたで、自動的じどうてきに Handler インターフェースを実装じっそう

http.HandleFunc("/api/health", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "OK")
})

適用てきよう場面ばめん

  • シンプルなリクエスト処理しょり
  • ステートレスな操作そうさ
  • 単一たんいつ責任せきにんのエンドポイント
  • 共有きょうゆうリソースが不要ふよう

HandleFunc メソッド

  • 通常つうじょう関数かんすうを Handler に変換へんかん
  • ルートレベルのミドルウェアを実装じっそう
  • Handler の実装じっそう簡略化かんりゃくか