Pipe

Pipe is function validate and transform data request before handler function. Have 3 types pipe
Body: validate and transform data from request body
Query: validate and transform data from request query
Param: validate and transform data from request params.
Body
// Define dto
type SignUpDto struct {
Name string `validate:"required"`
Email string `validate:"required,isEmail"`
Password string `validate:"isStrongPassword"`
Age int `validate:"isInt"`
}
Use in controller
package app
import "github.com/tinh-tinh/tinhtinh/core"
func Controller(module *core.DynamicModule) *core.DynamicController {
ctrl := module.NewController("test")
ctrl.Pipe(core.Body(&SignUpDto{})).Post("", func (ctx core.Ctx) error {
return ctx.JSON(core.Map{
"data": ctx.Body(),
})
})
return ctrl
}
Query
Define dto for query
package app
import "github.com/tinh-tinh/tinhtinh/core"
type FilterDto struct {
Name string `validate:"required" query:"name"`
Email string `validate:"required,isEmail" query:"email"`
Age int `validate:"isInt" query:"age"`
}
func Controller(module *core.DynamicModule) *core.DynamicController {
ctrl := module.NewController("test")
ctrl.Pipe(core.Query(&FilterDto{})).Post("", func (ctx core.Ctx) error {
return ctx.JSON(core.Map{
"data": ctx.Queries(),
})
})
return ctrl
}
Param
Define dto for params
package app
import "github.com/tinh-tinh/tinhtinh/core"
type ParamDto struct {
ID int `validate:"required,isInt" param:"id"`
}
func Controller(module *core.DynamicModule) *core.DynamicController {
ctrl := module.NewController("test")
ctrl.Pipe(core.Param(&ParamDto{})).Get("{id}", func (ctx core.Ctx) error {
return ctx.JSON(core.Map{
"data": ctx.Params(),
})
})
return ctrl
}
Last updated