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.

116 lines
2.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
}