---
id: validation
title: 🔎 Validation
sidebar_position: 5
---

## Validator package

Fiber provides the [Bind](../api/bind.md#validation) function to validate and bind [request data](../api/bind.md#binders) to a struct.

```go title="Example"

import "github.com/go-playground/validator/v10"

type structValidator struct {
    validate *validator.Validate
}

// Validator needs to implement the Validate method
func (v *structValidator) Validate(out any) error {
    return v.validate.Struct(out)
}

// Setup your validator in the config
app := fiber.New(fiber.Config{
    StructValidator: &structValidator{validate: validator.New()},
})

type User struct {
  Name string `json:"name" form:"name" query:"name" validate:"required"`
  Age  int    `json:"age" form:"age" query:"age" validate:"gte=0,lte=100"`
}

app.Post("/", func(c fiber.Ctx) error {
  user := new(User)
  
  // Works with all bind methods - Body, Query, Form, ...
  if err := c.Bind().Body(user); err != nil { // <- here you receive the validation errors
    return err
  }
  
  return c.JSON(user)
})
```
