Go プログラミング

Golang Echo ルーティングの末尾スラッシュについて

2018年12月21日

久しぶりに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 ...

続きを見る

-Go, プログラミング
-,