Skip to content
/ binding Public
forked from flamego/binding

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

License

Notifications You must be signed in to change notification settings

asjdf/binding

This branch is 1 commit ahead of, 8 commits behind flamego/binding:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a06ffc2 · Apr 28, 2023

History

42 Commits
Mar 6, 2023
Dec 8, 2021
May 27, 2021
May 27, 2021
May 27, 2021
Oct 24, 2022
Apr 28, 2023
Apr 28, 2023
May 27, 2021
Jul 31, 2021
Apr 3, 2023
Apr 3, 2023

Repository files navigation

binding

GitHub Workflow Status Codecov GoDoc Sourcegraph

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

Installation

The minimum requirement of Go is 1.18.

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.

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%