2023-10-23
Fiber でウェブアプリケーションを作ってます。
リクエストされたパスを取得する方法を紹介します。
パスを知りたい..??
(私は意識してなかったですが) パスの取り扱いは router の責務です。 そのため通常のウェブアプリでは「パスを知りたい」というケースがあまり無いと思います。
が、例えば静的コンテンツの配信など、何かしらの事情でルーティングにワイルドカード (*) を使わざるを得ない時があります。 本エントリではそういうケースを想定しています。
リクエストされたパスを取得する
パスは fiber.Ctx の Path() で取得できます。
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