Golang Cafe #40 まとめ Gorilla web toolkit を試す。 その3

2014/07/27に開催された「Golang Cafe #40」についてのまとめです。

開催からかなり経ってしまいましたが、記録としてまとめておきます。


前回、前々回に引き続き今回もGorilla is a web toolkitを試してみる会となりました。
その中から、今回は残りのgorilla/reverse、gorilla/rpc、gorilla/schema、gorilla/securecookieをかなり駆け足でみていきました。

gorilla/reverse

本家の説明はこちらのページ
インストール。

$ go get github.com/gorilla/reverse

gorilla/muxパッケージはurlを解析してハンドラを呼び出していますが、このパッケージは、正規表現からurlの文字列を生成します。(muxパッケージにもにたような機能がありますが)
簡単なサンプルを載せておきます。

func main() {
    func1()
    func2()
}

func func1() {
    regexp, err := reverse.CompileRegexp(`/foo/1(\d+)3`)

    url, err := regexp.Revert(url.Values{"": {"2"}})

    fmt.Println(url, err)
}

func func2() {
    regexp, err := reverse.CompileRegexp(`/foo/1(?P<two>\d+)3`)
    if err != nil {
        panic(err)
    }
    // url is "/foo/123".
    url, err := regexp.Revert(url.Values{"two": {"2"}})

    fmt.Println(url, err)
}

実行結果は

/foo/123 <nil>
/foo/123 <nil>

1つ目の例は定義した正規表現にパラメータをセットした文字列を返しています。
2つ目の例は名前付きの正規表現を使用しています。

gorilla/rpc

本家の説明はこちらのページ
インストール。

$ go get github.com/gorilla/rpc

Go言語では標準でnet/rpcパッケージがあるのですが、gorilla/rpcは1リクエスト/1呼び出しということらしいです。
この辺りは私がnet/rpcパッケージをまだあまりみていないのではっきりとしたことはよくわかりません。
サーバー側はgorilla/rpcを使用して作成しておきますが、クライアント側はGoの標準的なrpc呼び出しの方法でよさそうです。
サンプルコードは動作が確認できたら掲載しようと思います。

gorilla/schema

本家の説明はこちらのページ
インストール。

$ go get github.com/gorilla/schema

gorilla/schemaパッケージは、マップやポストされたデータから独自に定義した構造体への詰替えを行ってくれるようです。
入れ子のパラメータにも対応しているようなのですが、個人的には配列パラメータの命名方法が気に入りません。

gorilla/securecookie

本家の説明はこちらのページ
インストール。

$ go get github.com/gorilla/securecookie

このパッケージはクッキーなどに入れる値の暗号化、復号化の機能を提供しています。
暗号化に使用するキーはsecurecookie.GenerateRandomKey関数を使用すれば良いとのことです。

まとめ

3回に渡りGorilla web toolkitをみてきましたが、(3回目はかなり駆け足な内容になってしまいましたが)メインとなるのはやはりgorilla/muxパッケージでしょうか。その他にもWebアプリケーションを作成する上で必要となりそうな機能も用意されていているので、簡単なものを作るだけなら十分な気もします。