devlog

【Go】Fiber でリクエストされたパスを取得する

2023-10-23

Fiber でウェブアプリケーションを作ってます。
リクエストされたパスを取得する方法を紹介します。

パスを知りたい..??

(私は意識してなかったですが) パスの取り扱いは router の責務です。 そのため通常のウェブアプリでは「パスを知りたい」というケースがあまり無いと思います。

が、例えば静的コンテンツの配信など、何かしらの事情でルーティングにワイルドカード (*) を使わざるを得ない時があります。 本エントリではそういうケースを想定しています。

リクエストされたパスを取得する

パスは fiber.CtxPath() で取得できます。

package main import ( "fmt" "github.com/gofiber/fiber/v2" ) func main() { app := fiber.New(fiber.Config{}) app.Get("/*", func(c *fiber.Ctx) error { // パスを取得する path := c.Path() // like `/index.html` return c.SendString(fmt.Sprintf("your request path is %s", path)) }) app.Listen(":3000") }

例えば localhost:3000/index.html にアクセスすると /index.html という値を取得できます。 先頭にスラッシュが入るので注意してください。

なお似たようなメソッドに OriginalUrl() があるのですが、こちらはURLパラメータも付きます。

curl で確認

curl コマンドを叩くと、、

$ curl "localhost:3000/index.html?a=b" your request path is /index.html

期待通り /index.html という値が返ってきました。 URLパラメータは入りません。

  • 作成日
    2023-10-23
  • 更新日
    2023-10-23