例えば、
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で返ってきます。
こんだけ!