You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.3 KiB

package read
import (
"errors"
"github.com/gin-gonic/gin"
jsoniter "github.com/json-iterator/go"
"gopkg.in/go-playground/validator.v9"
"strings"
)
var _validate *validator.Validate
func init() {
_validate = validator.New()
}
func validate(s interface{}) error {
return _validate.Struct(s)
}
// 解析加密参数
func ParseParams(p interface{}, c *gin.Context) error {
ct := strings.ToLower(c.Request.Header.Get("Content-Type"))
if strings.Contains(ct, "application/json") {
body, _ := c.Get("recook")
if body != nil {
err := jsoniter.Unmarshal(body.([]byte), p)
if err != nil {
return err
}
return validate(p)
} else {
return nil
}
} else if strings.Contains(ct, "form-data") {
err := c.Bind(p)
if err != nil {
return err
}
return validate(p)
} else {
return errors.New("当前HTTP参数内容不支持解析")
}
}
func Params(p interface{}, c *gin.Context) error {
ct := strings.ToLower(c.Request.Header.Get("Content-Type"))
if strings.Contains(ct, "application/json") {
err := c.BindJSON(p)
if err != nil {
return err
}
return validate(p)
} else if strings.Contains(ct, "form-data") {
err := c.Bind(p)
if err != nil {
return err
}
return validate(p)
} else {
return errors.New("当前HTTP参数内容不支持解析")
}
}