Go(Golang)では、標準ライブラリの net/http パッケージを使って簡単にHTTPサーバーを作成できます。以下に、HTTPサーバー作成の基本的な構成から応用的な要素まで詳しく説明します。
1. 基本的なHTTPサーバーの構成
Goでは、http.ListenAndServe 関数を使ってサーバーを起動します。また、http.HandleFunc を使ってURLパスに対するハンドラーを登録します。
サンプルコード(最小限のHTTPサーバー):
解説:
-
http.HandleFunc("/", helloHandler)は、ルートパス(/)にアクセスがあったときにhelloHandlerを呼び出します。 -
http.ResponseWriterはレスポンスの書き込みに使い、*http.Requestはリクエスト情報の読み取りに使います。 -
http.ListenAndServe(":8080", nil)はポート8080でHTTPサーバーを開始します。
2. マルチパス対応
複数のパスに異なるハンドラーを設定できます。
3. ハンドラーのカスタム実装(http.Handler インタフェース)
http.Handler インタフェース)ハンドラーは http.Handler インタフェースを実装した構造体としても定義できます。
4. クエリパラメータやヘッダーの取得
URLに ?name=Taro のようにパラメータを付けてアクセスします。
5. フォームデータやJSONの処理
6. サーバーの構成オプション(タイムアウトやTLS)
http.Server 構造体を使って細かく設定できます。
7. TLS(HTTPS)対応
8. 静的ファイルの配信
これにより、./static フォルダのファイルが /static/ 以下でアクセス可能になります。
まとめ
GoのHTTPサーバーはシンプルながら強力で、次のような特徴があります。
-
net/http標準ライブラリだけで構築可能 -
複数のパス・ハンドラーの柔軟な定義
-
JSONやフォームデータの受け取りに対応
-
HTTPS、静的ファイル配信にも対応
-
独自のミドルウェア設計も可能
必要であれば、ルーティングやミドルウェアを強化するために gorilla/mux や chi などの外部ライブラリを使うことも可能です。
生成日:2025/05/03