package CheckHandler import ( "encoding/json" "fmt" "github.com/gin-gonic/gin" "io/ioutil" "os" "strings" ) func init() { //0、读取swagger json文件 inter := readSwaggerJson() //1、初始化参数长度检查器 lengthLimitMap = lengthLimitInit(inter) //2、初始化非空检查器 emptyLimitMap = emptyLimitInit(inter) //3、初始化整数检查器 intLimitMap = intLimitInit(inter) //4、初始化浮点数检查器 floatLimitMap = floatLimitInit(inter) //5、初始化手机号检查器 telLimitMap = telLimitInit(inter) //6、初始化邮箱检查器 emailLimitMap = emailLimitInit(inter) //7、初始化身份证检查器 idcardLimitMap = idcardLimitInit(inter) //8、加载日期格式检查器 dateTimeLimitMap = dateTimeLimitInit(inter) } /* 功能:当错误发生时,返回的结构体 */ type ResultStruct struct { InterfaceName string HttpType string Parameter string Message string } /** 功能:判断接口请求是不是合法 作者:黄海 时间:2020-03-16 */ func IsLegal(c *gin.Context) (bool, ResultStruct) { //纯接口名称,不要get后面的参数 jkName := strings.Split(c.Request.RequestURI, "?")[0] //1、长度检查 success, resultStruct := lengthLimitIsLegal(c, jkName) if !success { return success, resultStruct } //2、非空检查 success, resultStruct = emptyLimitIsLegal(c, jkName) if !success { return success, resultStruct } //3、整数检查 success, resultStruct = intLimitIsLegal(c, jkName) if !success { return success, resultStruct } //4、浮点数 success, resultStruct = floatLimitIsLegal(c, jkName) if !success { return success, resultStruct } //5、手机号 success, resultStruct = telLimitIsLegal(c, jkName) if !success { return success, resultStruct } //6、邮箱 success, resultStruct = emailLimitIsLegal(c, jkName) if !success { return success, resultStruct } //7、身份证 success, resultStruct = idcardLimitIsLegal(c, jkName) if !success { return success, resultStruct } //8、时间格式 success, resultStruct = datetimeLimitIsLegal(c, jkName) if !success { return success, resultStruct } return true, resultStruct } /** 功能:读取swagger的生成json 作者:黄海 时间:2020-03-16 */ func readSwaggerJson() interface{} { //读取doc目录下的swagger.json f, err := os.Open("./docs/swagger.json") if err != nil { fmt.Println("读取swagger.json失败!") return nil } content, _ := ioutil.ReadAll(f) var jsonBody interface{} err = json.Unmarshal(content, &jsonBody) if err != nil { fmt.Println("ERROR: ", err.Error()) return nil } return jsonBody }