URLのパスから値を取得する

ツイート このエントリーをはてなブックマークに追加
1つ上へ / ブログトップへ

例えば、

GET /users/id1234

のように、URLのパスにIDや名前などを含めるAPIを作りたいとします。

muxを使うと、メソッド一発で取得できるようになります。

package main

import (
        "fmt"
        "github.com/gorilla/mux"
        "net"
        "net/http"
)

func getUserAPI(w http.ResponseWriter, req *http.Request) {
        vals := mux.Vars(req)
        fmt.Fprintf(w, "get user API with id="+vals["id"])
}

func main() {
        r := mux.NewRouter()
        r.HandleFunc("/user/{id}", getUserAPI)

        l, _ := net.Listen("tcp", ":9000")
        http.Serve(l, r)
}

順に見ていきましょう。

r.HandleFunc("/user/{id}", getUserAPI)

まず、HandleFunc()の第一引数に、変数部分を表す{}をいれます。他言語のフレームワークにも似たようなのがありますよね。

vals := mux.Vars(req)
fmt.Fprintf(w, "get user API with id="+vals["id"])

次に、Vars()関数を使って変数部分を取り出します。結果はmapstringで返ってきます。

こんだけ!

1つ上へ / ブログトップへ