モケラ

Tech Sheets

mokelab

net/httpでHTTPサーバーを作ってみる

最終更新日:2017-09-09

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)
        }
}

一覧に戻る