昨日はGoの標準ライブラリ net/http
を使って、
ブラウザに「Hello, Go!」を表示するサーバーを作りました。
今日はそこから一歩進んで、URLパスで処理を分ける「ルーティング」と
クエリパラメータの取得に挑戦してみました!
目標:
- URLごとに違う処理を実行する(ルーティング)
?name=〇〇
のようなクエリパラメータを取得して表示する- 実際にブラウザやcurlからアクセスして確認!
実装コード:簡単なルーティング+クエリパラメータ取得
package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { name := r.URL.Query().Get("name") if name == "" { name = "ゲスト" } fmt.Fprintf(w, "こんにちは、%sさん!", name) } func aboutHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "これはGoで作った簡単なAPIサーバーです。") } func main() { http.HandleFunc("/", helloHandler) http.HandleFunc("/about", aboutHandler) fmt.Println("サーバー起動中:http://localhost:8080") err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println("サーバーエラー:", err) } }
実行方法
go run main.go
動作確認!
① ルートパス /
にアクセス
- URL:
http://localhost:8080/?name=たろう
→ 表示:
こんにちは、たろうさん!
※ クエリパラメータなしの場合は:
こんにちは、ゲストさん!
② /about
にアクセス
- URL:
http://localhost:8080/about
→ 表示:
これはGoで作った簡単なAPIサーバーです。
コード解説
ポイントまとめ
http.HandleFunc("/about", aboutHandler)
→ パスごとに処理を登録してルーティング実装r.URL.Query().Get("name")
→ クエリパラメータを取得する方法(string型で返る)- パラメータが空ならデフォルト値を設定するのも◎
これができると、「動くものが作れてる感」が一気に増しますね!
(以下、広告を含みます。)