LoginSignup
0
0

More than 1 year has passed since last update.

Golang net/httpメソッド忘備録

Last updated at Posted at 2021-06-04

Golang net/httpメソッド忘備録

Golangのnet/httpパッケージのメソット名と引数と軽い説明を随時、記録していきます。

サーバー起動

http.ListenAndServe("", nil)

http.ListenAndServe(":8080", nil)

第1引数にはポート番号(string)を渡し
第2引数にはハンドラ(Handle型)を渡す
第1引数 を空に設定するとデフォルトでポート80が設定され、
第2引数は通常nilでデフォルトのDefaultServeMuxというハンドラが設定される。

ハンドラとハンドラ関数

ハンドラ

ハンドラとは、クライアントから送られてきたHTTPリクエストを受け付け、処理をする。
また、HTMLテンプレートエンジンを呼び出し、HTTPレスポンスに組み込んでクライアントに返送できるようにする
MVCパターンでいう、コントローラーとモデルの役割を果たす。

Go言語におけるハンドラはServeHTTPというメソッドを持つインターフェースのことである。

type Handler interface {
  ServeHTTP(http.ResponseWriter, *http.Request)
}

全てServeHTTPのシグネチャ(関数やメソッドの名前、引数、データ型、返り値等の組み合わせ)を持つ。
※インターフェースは型のメソッドを集めた塊のイメージ

ハンドラ関数

ハンドラのように振る舞う関数のことであり、ハンドラと同じくServeHTTPのシグネチャを持つ。
単にハンドラを作成するのに便利な手段!

下記hello関数はHandlerFunc(hello)を通じてハンドラとしての振る舞いができるようになる。
HandlerFunc型にキャストするイメージが正しいのだろうか?

//ServeHTTPのシグネチャを持つhello関数
func hello(w http.ResponseWriter, r *http.Request) {
  fmt.Fprintf(w, "Hello!")
}

HandlerFunc型に変換(ハンドラとして使える)
helloHandler := HandlerFunc(hello)
混乱のもと、HandleFuncとHandlerFunc

HandleFunc・・・ハンドラ関数をDefaultServerMuxに登録する
HandlerFunc・・・型の名前

まだ途中です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0