mirror of https://github.com/gofiber/fiber.git
🩹🚨 - 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 typopull/2782/head
parent
c49faf9a8a
commit
d6c88764eb
|
@ -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()
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue