Skip to main content
Version: Next

🔄 Redirect

Redirect helpers send the client to another URL or route.

Redirect Methods

To

Redirects to a URL built from the given path. Optionally set an HTTP status.

info

If unspecified, status defaults to 303 See Other.

Signature
func (r *Redirect) To(location string) error
Example
app.Get("/coffee", func(c fiber.Ctx) error {
// => HTTP - GET 301 /teapot
return c.Redirect().Status(fiber.StatusMovedPermanently).To("/teapot")
})

app.Get("/teapot", func(c fiber.Ctx) error {
return c.Status(fiber.StatusTeapot).Send("🍵 short and stout 🍵")
})
More examples
app.Get("/", func(c fiber.Ctx) error {
// => HTTP - GET 303 /foo/bar
return c.Redirect().To("/foo/bar")
// => HTTP - GET 303 ../login
return c.Redirect().To("../login")
// => HTTP - GET 303 http://example.com
return c.Redirect().To("http://example.com")
// => HTTP - GET 301 https://example.com
return c.Redirect().Status(301).To("http://example.com")
})

Route

Redirects to a named route with parameters and queries.

info

To send params and queries to a route, use the RedirectConfig struct.

Signature
func (r *Redirect) Route(name string, config ...RedirectConfig) error
Example
app.Get("/", func(c fiber.Ctx) error {
// /user/fiber
return c.Redirect().Route("user", fiber.RedirectConfig{
Params: fiber.Map{
"name": "fiber",
},
})
})

app.Get("/with-queries", func(c fiber.Ctx) error {
// /user/fiber?data[0][name]=john&data[0][age]=10&test=doe
return c.Redirect().Route("user", fiber.RedirectConfig{
Params: fiber.Map{
"name": "fiber",
},
Queries: map[string]string{
"data[0][name]": "john",
"data[0][age]": "10",
"test": "doe",
},
})
})

app.Get("/user/:name", func(c fiber.Ctx) error {
return c.SendString(c.Params("name"))
}).Name("user")

Back

Redirects to the referer. If it's missing, fall back to the provided URL. You can also set the status code.

info

If unspecified, status defaults to 303 See Other.

Signature
func (r *Redirect) Back(fallback string) error
Example
app.Get("/", func(c fiber.Ctx) error {
return c.SendString("Home page")
})

app.Get("/test", func(c fiber.Ctx) error {
c.Set("Content-Type", "text/html")
return c.SendString(`<a href="/back">Back</a>`)
})

app.Get("/back", func(c fiber.Ctx) error {
return c.Redirect().Back("/")
})

Controls

info

Methods are chainable.

Status

Sets the HTTP status code for the redirect.

info

It is used in conjunction with To, Route, and Back methods.

Signature
func (r *Redirect) Status(status int) *Redirect
Example
app.Get("/coffee", func(c fiber.Ctx) error {
// => HTTP - GET 301 /teapot
return c.Redirect().Status(fiber.StatusMovedPermanently).To("/teapot")
})

RedirectConfig

Sets the configuration for the redirect.

info

It is used in conjunction with the Route method.

Definition
// RedirectConfig is a config to use with Redirect().Route()
type RedirectConfig struct {
Params fiber.Map // Route parameters
Queries map[string]string // Query map
}

Flash Message

Similar to Laravel, we can flash a message and retrieve it in the next request.

Messages

Retrieve all flash messages. See With for details.

Signature
func (r *Redirect) Messages() map[string]string
Example
app.Get("/", func(c fiber.Ctx) error {
messages := c.Redirect().Messages()
return c.JSON(messages)
})

Message

Get a flash message by key; see With.

Signature
func (r *Redirect) Message(key string) *Redirect
Example
app.Get("/", func(c fiber.Ctx) error {
message := c.Redirect().Message("status")
return c.SendString(message)
})

OldInputs

Retrieve stored input data. See WithInput.

Signature
func (r *Redirect) OldInputs() map[string]string
Example
app.Get("/", func(c fiber.Ctx) error {
oldInputs := c.Redirect().OldInputs()
return c.JSON(oldInputs)
})

OldInput

Get stored input data by key; see WithInput.

Signature
func (r *Redirect) OldInput(key string) string
Example
app.Get("/name", func(c fiber.Ctx) error {
oldInput := c.Redirect().OldInput("name")
return c.SendString(oldInput)
})

With

Send flash messages with With.

Signature
func (r *Redirect) With(key, value string) *Redirect
Example
app.Get("/login", func(c fiber.Ctx) error {
return c.Redirect().With("status", "Logged in successfully").To("/")
})

app.Get("/", func(c fiber.Ctx) error {
// => Logged in successfully
return c.SendString(c.Redirect().Message("status"))
})

WithInput

Send input data with WithInput, which stores them in a cookie.

It captures form, multipart, or query data depending on the request content type.

Signature
func (r *Redirect) WithInput() *Redirect
Example
// curl -X POST http://localhost:3000/login -d "name=John"
app.Post("/login", func(c fiber.Ctx) error {
return c.Redirect().WithInput().Route("name")
})

app.Get("/name", func(c fiber.Ctx) error {
// => John
return c.SendString(c.Redirect().OldInput("name"))
}).Name("name")