gpt4 book ai didi

json - 在 Golang 中读取请求体两次

转载 作者:IT王子 更新时间:2023-10-29 01:25:50 25 4
gpt4 key购买 nike

<分区>

type ValidationModel struct {
Name string `json:"name" valid:"alpha,required~Name is required"`
Email string `json:"email" valid:"email~Enter a valid email.,required~Email is required."`
Password string `json:"password" valid:"required~Password is required"`
}

validationModel := ValidationModel{}

json.NewDecoder(r.Body).Decode(&validationModel)

_, err := govalidator.ValidateStruct(validationModel)

首先,我使用 govalidator 验证请求正文。

type UserModel struct {
ID bson.ObjectId `json:"_id" bson:"_id"`
Name string `json:"name" bson:"name"`
Email string `json:"email" bson:"email"`
Password string `json:"password,omitempty" bson:"-"`
PasswordHash string `json:"-" bson:"passwordHash"`
Salt string `json:"-" bson:"salt"`
Token string `json:"token,omitempty" bson:"-"`
}


user := models.UserModel{}
json.NewDecoder(r.Body).Decode(&user)

fmt.Println(user)

验证请求后,我再次将请求主体解码为用户结构,但请求主体已使用 validationModel 读取一次,因此当我尝试再次将其解码为用户时,它没有给我任何值。

这里我可以想到两种解决方案:

  1. 将请求主体存储在一个单独的变量中,并使用该变量两次。

  2. 复制用户中的 validationModel 值。

但我对实现这些方法以及最好遵循哪种方法一无所知。或者有没有其他可以实现的解决方案?

提前致谢。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com