はじめに
富山県に住んでいる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.ResponseWriter
とhttp.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型を返す
使用している教材はこちら↓
おわりに
最後までお読みいただきありがとうございました。
アドバイス・応援コメント等いただけますと幸いです。