Routerを作る

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

net/httpの所で紹介しましたが、gorilla/muxを使うともう少し高度なことが簡単にできます。

下記は、/userでアクセスされたとき、指定した関数を呼び出すよう書いてみた例です。

package main

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

func getUserAPI(w http.ResponseWriter, req *http.Request) {
        fmt.Fprintf(w, "get user API")
}

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

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

muxの基本的な使い方を見ていきましょう。

r := mux.NewRouter()

Routerオブジェクトを作ります。このオブジェクトがルーティング情報をまとめて管理してくれます。

r.HandleFunc("/user", getUserAPI)

net/httpの時と同じですね。/userでリクエストがきたら、getUserAPIという関数を呼び出すよう設定します。関数の形はnet/httpで使ったものと同じです。

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

今回は、ListenAndServeでまとめて開始するのではなく、別々にしてみました。Listen()関数でListenerオブジェクトを取得し、Serve関数で開始します。ここでRouterオブジェクトを渡すことで、ルーティングを適切に行います。

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