0
0

More than 1 year has passed since last update.

【#33 エンジニア転職学習】Go WebApplications Handler

Posted at

はじめに

富山県に住んでいるChikaといいます。
毎日投稿を目標に、バックエンドエンジニア転職に向けた学習内容をアウトプットします。

使用しているGoのUdemy教材後半部分である、
Webアプリ作成演習を学習していきます。

バックエンドエンジニアになるまでの学習内容は以前投稿した以下の記事を基にしています。

本日の学習内容

本日はGoのwebアプリ用標準パッケージ、アプリ開発に向けての準備等を学習しました。

  • templateキャッシュ
  • Handler <--Topics!
  • ビットコインについて
  • config, log のini設定

Handler

func makeHandler(fn func(http.ResponseWriter, *http.Request, string)) http.HandlerFunc {                                                                          ---> 9
	return func(w http.ResponseWriter, r *http.Request){
		m := validPath.FindStringSubmatch(r.URL.Path)
		if m == nil {
			http.NotFound(w, r)
			return
		}
		fn(w, r, m[2])
	}

GoのWebApplicationsにも出てくる上記のようなmakeHandlerについて

http.HandleFuncが引数としてhttp.ResponseWriterhttp.Requestしか受け付けないので、
第三引数としてstringを加えて、オリジナルのHTTPHandlerFunc型として返すようにviewHandler等をwrapする役割

  • fnとしてResponseWriter、Request、stringを引数にとる
  • mにhttp.RequestのURLPathと一致する文字列の/edit|view|save/以降の文字列を、FindStringSubmatch関数のルールに則ってスライスにして返す
  • mがnilの場合はNotFoundとしてエラーを返す
  • 問題なければfnとしてm[2]の値(validpathで取得した^/(edit|save|view)/([a-zA-Z0-9]+)$のURLをFindStringSubmatchでスライスに切り分けた最後の値)を含む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