net/httpでHTTPサーバーを作ってみる
最終更新日:2022-05-08
Goのnet/httpでHTTPサーバーを作るには、次の3ステップで作ります。
- ハンドラーを作る
- ハンドラーを登録する
- Listenする
ハンドラーを作る
リクエストを受け取った時に実行するハンドラーを作ります。リクエストは第2引数に入っています。
func MyHandler(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("Hello net/http server"))
}
ResponseWriterのWriteHeaderで返すHTTPステータスを指定します。そしてWriteでボディ部分を指定します。WriteHeaderはWriteの前に呼ぶ必要があるので注意しましょう。
ハンドラーを登録する
作ったハンドラーをhttp.HandleFuncで登録します。
http.HandleFunc("/", MyHandler)
Listenする
ハンドラーの登録ができたら、http.ListenAndServeでリクエストを受け付けるようにします。
err := http.ListenAndServe(":9001", nil)
if err != nil {
fmt.Printf("ERROR : %!s(MISSING)", err)
}
まとめ
以上をまとめると次のようになります。
package main
import (
"fmt"
"net/http"
)
func MyHandler(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("Hello net/http server"))
}
func main() {
http.HandleFunc("/", MyHandler)
err := http.ListenAndServe(":9001", nil)
if err != nil {
fmt.Printf("ERROR : %!s(MISSING)", err)
}
}