| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | 
							- package ii
 
- import (
 
- 	"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
 
- }
 
 
  |