🩹🚨 - fix for redirect with query params (#2748)

* redirect with query params did not work, fix it and add test for it

* redirect middleware - fix test typo
pull/2782/head
gilwo 2023-12-22 17:18:04 +02:00 committed by GitHub
parent c49faf9a8a
commit d6c88764eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 1 deletions

View File

@ -30,7 +30,11 @@ func New(config ...Config) fiber.Handler {
for k, v := range cfg.rulesRegex {
replacer := captureTokens(k, c.Path())
if replacer != nil {
return c.Redirect(replacer.Replace(v), cfg.StatusCode)
queryString := string(c.Context().QueryArgs().QueryString())
if queryString != "" {
queryString = "?" + queryString
}
return c.Redirect(replacer.Replace(v)+queryString, cfg.StatusCode)
}
}
return c.Next()

View File

@ -44,6 +44,12 @@ func Test_Redirect(t *testing.T) {
},
StatusCode: fiber.StatusMovedPermanently,
}))
app.Use(New(Config{
Rules: map[string]string{
"/params": "/with_params",
},
StatusCode: fiber.StatusMovedPermanently,
}))
app.Get("/api/*", func(c *fiber.Ctx) error {
return c.SendString("API")
@ -104,6 +110,12 @@ func Test_Redirect(t *testing.T) {
url: "/api/test",
statusCode: fiber.StatusOK,
},
{
name: "redirect with query params",
url: "/params?query=abc",
redirectTo: "/with_params?query=abc",
statusCode: fiber.StatusMovedPermanently,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {