Go言語学習16日目:URLパスで処理を分ける!クエリパラメータ付き簡単APIを作ってみた(net/http応用)

昨日はGoの標準ライブラリ net/http を使って、
ブラウザに「Hello, Go!」を表示するサーバーを作りました。

kunio-ud-all.com

今日はそこから一歩進んで、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型で返る)
  • パラメータが空ならデフォルト値を設定するのも◎

これができると、「動くものが作れてる感」が一気に増しますね!


(以下、広告を含みます。)