| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | package iiimport (	"encoding/json"	"net/http"	"golib/network")const (	maxReadFromValidateSize = 4096)// Request: {"itemName": "test.test", "fieldName": ["testFloat64", "testInt64"]}// Response: {"itemName: "test.test", "fields": [...]}// Response.field: {//              "name":"testFloat64",//              "label": "测试Float"//              "type":"float64",//              "required":true,//              "unique":false,//              "minimum":1,//              "maximum":3.1415,//              "decimal":3,//              "default": 3.1415//              "enums": [{"key":"3.1415","value":3.1415}]//          }type formValidateGet struct {	ItemName  string   `json:"itemName"`	FieldName []string `json:"fieldName"`}type formValidateGetResponse struct {	ItemName string          `json:"itemName"`	Fields   []FieldInfoJSON `json:"fields"`}type formValidationHandler struct {	items Items}func (f *formValidationHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {	b, err := network.HTTP.ReadRequestBody(w, r, maxReadFromValidateSize)	if err != nil {		network.HTTP.Error(w, http.StatusForbidden)		return	}	var fvg formValidateGet	if err = json.Unmarshal(b, &fvg); err != nil {		network.HTTP.Error(w, http.StatusBadRequest)		return	}	itemInfo, ok := f.items.Has(fvg.ItemName)	if !ok {		network.HTTP.Error(w, http.StatusNotFound)		return	}	formResp := new(formValidateGetResponse)	formResp.ItemName = fvg.ItemName	formResp.Fields = make([]FieldInfoJSON, len(fvg.FieldName))	for i, fieldName := range fvg.FieldName {		field, o := itemInfo.Field(fieldName)		if !o {			network.HTTP.Error(w, http.StatusBadRequest)			return		}		formResp.Fields[i] = field.ValidateJSON()	}	p, err := json.Marshal(formResp)	if err != nil {		network.HTTP.Error(w, http.StatusInternalServerError)		return	}	w.Header().Set("Content-Type", network.HTTPContentTypeJson)	w.WriteHeader(http.StatusOK)	_, _ = w.Write(p)}func NewFormValidateHandle(items Items) http.Handler {	fvh := formValidationHandler{		items: items,	}	return &fvh}
 |