0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GO#5 ハンドラ、ハンドラ関数、マルチプレクサ のメモ

Last updated at Posted at 2019-02-11

#GOプログラミング実践入門

※自分なりにまとめてみました。間違ってたらじゃんじゃん指摘してください。

##サーバー作成

ハンドラとかマルチプレクサは'net/http'のライブラリの魔法です。

http.ListenAndServe("ネットワークアドレス",nil)でサーバーを作成できる。
第2引数はリクエストを処理するハンドラを呼び出す。
ネットワークアドレスが'""'の場合デフォルトのポート80になる。
ハンドラがnilの場合デフォルトの'DefaultServeMux'になる。←これがマルチプレクサってやつらしい。

##ハンドラとハンドラ関数ってなに??
###結論から言うとハンドラ関数はハンドラのように振る舞う関数です!
じゃあそのハンドラって??

ServeHTTP(http.ResponseWriter, *http.Request)

の形のやつをハンドラっていいます。(ちょっと誤魔化しました。)

###ハンドラはURLによってする処理を決めるという認識だと思います。(railsでいうcontroller)

##ここまでをまとめてみます。
ListenAndServeの第2引数がハンドラ。
このハンドラのデフォルト値はDefaultServeMux

###ここで、ハンドラがマルチプレクサ??意味わからんてなった方もいると思います。安心してください。僕もです笑

構造、インスタンスの関係がこんな感じらしいです。

##'Handler > ServeMux > ServeHTTP > DefaultServeMux'

言葉で言いますと、

ServeMuxは構造体Handlerのインスタンス(構造体はrailsで言うmodelみたいな感じですかね)
ServeHTTPはServeMuxのメソッド(railsでいう`ServeHTTP.ServeMux`で呼び出せる的な??)
DefaultServeMuxはServeMuxのインスタンス

となります。

では#マルチプレクサについて見てみましょう。

##マルチプレクサの仕事
'リクエストを特定のハンドラに転送するURLのマッチング処理'

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?