validation - 验证 HTTP 请求以检查是否包含所有必填字段
问题描述
我正在使用gin来创建一个 http 服务器。我想在开始调用其他函数之前验证每个 HTTP 请求。
我创建了一个struct
名为CreateUser
来验证所有传入的 HTTP POST 请求CreateUser
type CreateUser struct {
FirstName string `validate:"min:2, regexp=^[a-zA-Z]*$"`
LastName string `validate:"min:2, regexp=^[a-zA-Z]*$"`
Email string `validate:"min:10, max=255 regexp=^[0-9a-zA-Z]*@[a-z]*$"`
}
当请求UserCreate
发生时,将调用以下函数。但即使我没有firstName
在 post 请求中发送。验证通过,没有错误。这可能是什么原因?我如何验证它架构的每一个 HTTP 请求?
func (uhc UserHttpController) UserCreate(ctx *gin.Context) {
var createUser config.CreateUser
if err := ctx.BindJSON(&createUser); err != nil {
// send the bad request response
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
createdUser := InitUserController(uhc.globalVars).UserCreate(createUser)
ctx.JSON(http.StatusOK, gin.H{
"data": createdUser,
})
}
我尝试不发送lastName
POST 请求正文,但在调试时将LastName
其初始化为""
空字符串,因此不会发生错误。
解决方案
推荐阅读
- apache-flink - 2 SideOutputs 行为的联合
- reactjs - 根据内容中的值重新排序 FlatList
- react-native - react-devtools 代理在 react native 与 expo 中没有任何联系
- python - 匹配选定区域的颜色
- hyperledger-fabric - 未能调用链代码契约,错误:事务返回失败:ReferenceError:bor 未定义
- unit-testing - 如何通过测试到达 catchError 运算符
- ios - SDK 版本问题。此应用更新是使用 iOS 12.1 SDK 构建的。自 2020 年 6 月 30 日起,iPhone 应用程序的更新必须使用 iOS 13 SDK 构建
- postgresql - Google Cloud Platform 中的 PostgreSQL 自动备份问题
- mysql - 如何更正 MySQL 多个 JOINS 查询中的列名值
- javascript - KonvaJS | 形状位置不正确