久しぶりにGolangのEchoを触ってみてふと思ったことがあります。
ルーティングの際にURIの末尾に/(スラッシュ)が有るのと無いので、Page Not Found扱いされるのが気になり今回はその対策です。
スラッシュの有無の挙動
まずは下記のソースコードを確認します。
func main() {
e := echo.New()
e.GET("/", func...)
e.GET("/test", func...)
}
この時にhttp://[ホスト]/testでアクセスすると普通に表示されます。
http://[ホスト]/test/だとNot Found Pageになります。
対策
末尾にあるスラッシュの有無でページが表示されなくなるのは困ります。
そのためにミドルウェアを設定する事で対応を行います。
RemoveTrailingSlash
末尾にあるスラッシュを省く関数になります。
ソースコードを確認していきます。
func main() {
e := echo.New()
e.Pre(middleware.RemoveTrailingSlash())
e.GET("/", func...)
e.GET("/test", func...)
}
e.PreでRemoveTrailingSlashを入れます。
そうすることで、http://[ホスト]/test/をhttp://[ホスト]/testとして扱うことができます。
もし
ここからは余談ですが、逆の事をしたい場合はAddTrailingSlash()を設定する事で、対応可能になります。
まとめ
RemoveTrailingSlashを使う事で、URIの末尾のスラッシュを削除することができます。
末尾のスラッシュの有無のアクセスが気になる方は、RemoveTrailingSlashを利用してみることをオススメします。
-
Golang Echo RemoveTrailingSlashを使った際のGroupについて注意
RemoveTrailingSlashを使ったGroupのルーティングの設定でハマったので記載いておきます。 RemoveTrailingSlashとは URIの末尾のスラッシュを削除します。 ハマった内容 http://[ホスト]/a/b ...続きを見る