Go言語のWebサーバーを簡単に作成するサンプルコード解説
先生と生徒の会話形式で理解しよう
生徒
「先生、Go言語で簡単にWebサーバーを作ることはできますか?」
先生
「もちろんできます。Goは標準ライブラリにnet/httpが用意されているので、少ないコードでWebサーバーを立ち上げられます。」
生徒
「具体的にどんなコードになるんですか?」
先生
「それでは、基本的なサンプルを使って説明しますね。」
1. Go言語でWebサーバーを作る基本
GoでWebサーバーを作るためには、http.HandleFuncを使ってルートパスと処理を紐づけ、http.ListenAndServeでサーバーを起動します。これだけでブラウザからアクセスできるサーバーが完成します。
package main
import (
"fmt"
"net/http"
)
func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "こんにちは、Go言語のWebサーバーです!")
}
func main() {
http.HandleFunc("/", helloHandler)
fmt.Println("サーバーを起動します。ポート:8080")
http.ListenAndServe(":8080", nil)
}
このコードでは、ブラウザでhttp://localhost:8080にアクセスすると、「こんにちは、Go言語のWebサーバーです!」という文字が表示されます。非常にシンプルですが、基本のWebサーバーとして動作します。
2. ルート以外のページも作れる
Webサイトでは複数のページを持つことが多いですが、Goではルートごとに処理を簡単に追加できます。
func aboutHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "これはGo言語の紹介ページです。")
}
func main() {
http.HandleFunc("/", helloHandler)
http.HandleFunc("/about", aboutHandler)
fmt.Println("サーバーを起動します。ポート:8080")
http.ListenAndServe(":8080", nil)
}
このように/aboutのURLにアクセスすると、別のページ内容を表示できます。ルーティングを簡単に追加できるのがGoの特徴です。
3. POSTリクエストやフォームデータの処理
Webアプリケーションではユーザーがフォームを送信するケースが多いです。Goではr.Methodでリクエストの種類を確認し、r.FormValueでフォームデータを取得します。
func formHandler(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {
r.ParseForm()
name := r.FormValue("name")
fmt.Fprintf(w, "送信された名前: %s", name)
} else {
fmt.Fprintf(w, "<form method='post'><input name='name'><input type='submit'></form>")
}
}
func main() {
http.HandleFunc("/form", formHandler)
http.ListenAndServe(":8080", nil)
}
このコードでは、ブラウザで/formにアクセスするとフォームが表示され、入力後に送信するとサーバー側でデータを受け取れます。
4. Webサーバー作成のポイント
- Goの標準ライブラリだけで簡単にWebサーバーを構築可能。
http.HandleFuncでURLごとに処理を紐づける。http.ListenAndServeでサーバーを起動、ポート番号を指定する。- フォームやPOSTリクエストも
r.FormValueで簡単に扱える。 - 開発中は
localhostで確認、公開する場合はサーバーやクラウド環境が必要。
これらのポイントを押さえることで、Go言語でシンプルなWebサーバーを作り、さらにページ追加やフォーム処理などを応用できるようになります。