SkillAgentSearch skills...

Binding

Package binding is a middleware that provides request data binding and validation for Flamego

Install / Use

/learn @flamego/Binding
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

binding

GitHub Workflow Status GoDoc

Package binding is a middleware that provides request data binding and validation for Flamego.

Installation

go get github.com/flamego/binding

Getting started

package main

import (
	"fmt"
	"net/http"

	"github.com/flamego/binding"
	"github.com/flamego/flamego"
)

type address struct {
	Street string `json:"street" validate:"required"`
	City   string `json:"city" validate:"required"`
	Planet string `json:"planet" validate:"required"`
	Phone  string `json:"phone" validate:"required"`
}

type user struct {
	FirstName string     `json:"first_name" validate:"required"`
	LastName  string     `json:"last_name" validate:"required"`
	Age       uint8      `json:"age" validate:"gte=0,lte=130"`
	Email     string     `json:"email" validate:"required,email"`
	Addresses []*address `json:"addresses" validate:"required,dive,required"`
}

func main() {
	f := flamego.Classic()
	f.Post("/", binding.JSON(user{}), func(c flamego.Context, form user, errs binding.Errors) {
		if len(errs) > 0 {
			c.ResponseWriter().WriteHeader(http.StatusBadRequest)
			_, _ = c.ResponseWriter().Write([]byte(fmt.Sprintf("Oops! Error occurred: %v", errs[0].Err)))
			return
		}

		fmt.Printf("Name: %s %s\n", form.FirstName, form.LastName)
	})
	f.Run()
}

Getting help

License

This project is under the MIT License. See the LICENSE file for the full license text.

Related Skills

View on GitHub
GitHub Stars6
CategoryDevelopment
Updated7mo ago
Forks2

Languages

Go

Security Score

82/100

Audited on Aug 3, 2025

No findings