2 minutes
[Golang] EchoのUseの挙動について
お世話になっております。
しゃまとんです。
Go言語では多数のウェブフレームワークが公開されていますが、最近ホットそうなフレームワークとしてEchoというものがあります。
ちょっと見てみると、エンドポイントに渡す引数がシンプルだったり、公式で使い方を記載してくれていたりします。
また、スター数も5000を越えていて、支持されているのが伺えますね。(2017.03時点)
そこで、gojiを使って触ってたものを置き換えてみることにしたのですが、Use関数の挙動が微妙に違っていたのでメモです。
Use関数とはリクエストが飛んできたときに事前に決められた共通の処理をさせたい場合に利用する機能です。 今回はEchoを使って下記のように簡単な返答をするコードを用意しました。
アクセス時に1,2,3と表示するような機能をいれました。
これをターミナルから実行し、各URLへアクセスしてみます。
■ http://localhost:8080/nice/middle/hoge
1,2しか表示されません。

■ http://localhost:8080/nice/middle/fuga
1,2,3と表示されます。

このように、Useとルーティングの順序が違うとUseしたけど呼ばれません。
導入時にUseの呼び出しがルーティングの後になっていて、呼ばれなくてハマっていました。 gojiのでは順序は気にしなくても良かった気がします。フレームワークによって若干挙動は変わったりするので、注意ですね。
以上です。