どうも、Go勉強中のとがみんです。
net/httpパッケージを活用したGoの簡易APIの作成について整理していきます。
Contents
今回作成するもの
「名前」をリクエストすると、「こんにちは!〇〇さん!」というレスポンスを返してくれる超簡易APIを作成してみます。
HTTPクライアントとサーバーの実装を提供するnet/httpパッケージを活用します。
作成したGoの簡易APIのソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package main import ( "fmt" "net/http" ) func main() { fmt.Print("Webサーバーを起動します") handleRequests() } func handleRequests() { mux := http.NewServeMux() mux.Handle("/hello", http.HandlerFunc(hello)) http.ListenAndServe(":8080", mux) } func hello (w http.ResponseWriter, r *http.Request){ w.WriteHeader(http.StatusOK) fmt.Fprintf(w, "こんにちは" + r.FormValue("name") + "さん!") } |
handleRequests()
handleRequests()関数は、リクエストURLとそのリクエストに応じた関数のマッピングを保持し、Webサーバーを起動し、リクエストを待ち受ける関数です。
http.NewServeMux()は、新しいServeMuxを作成し返却します。
ServeMuxは、HTTPリクエストのマルチプレクサで、受信したリクエストのURLと、そのURLに関数を対応させる役割を持ちます。
mux.Handle(“/hello”, http.HandlerFunc(hello))のコードで、リクエストURLの/helloとhello関数のマッピングを登録し、http.ListenAndServe(“:8080”, mux)でリクエストを待ち受けの状態になります。
hello (w http.ResponseWriter, r *http.Request)
この関数は受け取ったリクエストを処理し、レスポンスを作成する関数です。
レスポンスに、はリクエストで受け取ったパラーメータを活用して、文字列を作成しています。
実行して動作を確認する
Webサーバーを起動します
下記にアクセスすると、「こんにちはtogaminさん!」と表示されました。
http://localhost:8080/hello?name=togamin
まとめ
net/httpのパッケージを活用したGoの簡易APIを作成しました。
参考
Goのhttp.Handlerやhttp.HandlerFuncをちゃんと理解する