formdata

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 17, 2019 License: MIT, MIT Imports: 4 Imported by: 0

README

Formdata 用户提交数据接口

处理用户提交数据的接口,以及基于JOSN格式的实现

使用方式

//创建自定义表单

type ExampleForm struct{
    form.Form
    Field1 string
    Field2 *string
    //内部变量,不会被序列化,用于在InitWithRequest方法中储存当前用户信息
    uid string
}

//设置表单id,便于区分表单
constExampleFormID = "exampleform"

//表单初始化函数
func NewExampleForm() *ExampleForm{
    form:=&ExampleForm{}
    form.SetModelID(ExampleFormID)
    form.SetFieldLabels(ExampleFormFieldLabels)
    return form
}

//表单验证函数
func (f *ExampleForm) Validate() error {
    f.ValidateFieldf(f.Field1 != "", "Field1", "%[1]s必填") 
    f.ValidateFieldf(f.Field2 != nil, "Field2", "%[1]s必填") 
    if !f.HasError() {
        //此处添加需要没有其他错误才执行的代码
    }
    return nil
}

//表单实例通过http request初始化函数
//一般用于获取请求对应的用户等信息,便于表单验证
func (f *ExampleForm) InitWithRequest(r *http.Request) error {
    f.uid=MustGetUIDFromRequest(r)
	return nil
}    

//标准的表单验证动作
var formAction=func(w http.ResponseWriter, r *http.Request)
    //创建表单
    form := forms.NewExampleFormForm()
    //验证表单
    if formdata.MustValidateJSONRequest(r, form) {
        //替换为成功的业务逻辑
        render.MustJSON(w, form, 200)
    } else {
        //将表单错误渲染为状态码为422的JSON输出
        formdata.MustRenderErrorsJSON(w, form)
    }

Documentation

Index

Constants

View Source
const MsgBadRequest = "Bad request."

MsgBadRequest field error msg used in unmarshaler request form fail.

Variables

This section is empty.

Functions

func MustRenderError

func MustRenderError(w http.ResponseWriter, marshaler func(interface{}) ([]byte, error), model RequestValidator) int

MustRenderError render error data of model to http response. Data was marshaled by marshaler. Http bad request error will be executed if model has a bad request error. Return bytes length rendered Panic if any error raised.

func MustRenderErrorsJSON

func MustRenderErrorsJSON(w http.ResponseWriter, model RequestValidator)

MustRenderErrorsJSON render error data of model to http response. Data was marshaled by json.marshal. Http bad request error will be executed if model has a bad request error. Return bytes length rendered Panic if any error raised.

func MustValidateJSONRequest

func MustValidateJSONRequest(r *http.Request, m RequestValidator) bool

MustValidateJSONRequest unmarshal form with request body with json.unmarshal, then init form with request and validate it. Return validate result. Add bad request error to form empty field if unmarshal form fail. Panci if any other error raised.

func MustValidateRequestBody

func MustValidateRequestBody(r *http.Request, Unmarshaler func([]byte, interface{}) error, m RequestValidator) bool

MustValidateRequestBody unmarshal form with request body with given Unmarshaler, then init form with request and validate it. Return validate result. Add bad request error to form empty field if unmarshal form fail. Panci if any other error raised.

Types

type Form

type Form struct {
	model.Model
	// contains filtered or unexported fields
}

Form form struct

func (*Form) BadRequest

func (model *Form) BadRequest() bool

BadRequest return if form has a bad request error.

func (*Form) HTTPRequest

func (model *Form) HTTPRequest() *http.Request

HTTPRequest Return http request in form

func (*Form) HasError

func (model *Form) HasError() bool

HasError return if model has any error. Return true if form has a bad request error.

func (*Form) InitWithRequest

func (model *Form) InitWithRequest(*http.Request) error

InitWithRequest init model with given request. Return any error if rasied. You can override this methon in your own form.

func (*Form) SetBadRequest

func (model *Form) SetBadRequest(hasError bool)

SetBadRequest set whether form has a bad request error.

func (*Form) SetHTTPRequest

func (model *Form) SetHTTPRequest(r *http.Request)

SetHTTPRequest Set http request to form

type RequestValidator

type RequestValidator interface {
	model.Validator
	//InitWithRequest init model with given request.
	//Return any error if rasied.
	InitWithRequest(*http.Request) error
	//BadRequest return if form has a bad request error.
	BadRequest() bool
	//SetBadRequest set whether form has a bad request error.
	SetBadRequest(v bool)
	//Return http request in form
	HTTPRequest() *http.Request
	//Set http request to form
	SetHTTPRequest(*http.Request)
}

RequestValidator interface of request form that can be validated.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL