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 驗(yàn)證請(qǐng)求正文。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)在驗(yàn)證請(qǐng)求之后,我再次將請(qǐng)求主體解碼為用戶結(jié)構(gòu),但請(qǐng)求主體已使用 validationModel 讀取一次,因此當(dāng)我再次嘗試將其解碼為用戶時(shí),它沒有給我任何值。我可以在這里想到兩種解決方案:將請(qǐng)求主體存儲(chǔ)在一個(gè)單獨(dú)的變量中,并使用該變量兩次。復(fù)制用戶中的 validationModel 值。但是我對(duì)實(shí)施這些方法以及最好遵循哪種方法一無所知?;蛘哂袥]有其他可以實(shí)施的解決方案?提前致謝。
1 回答
縹緲止盈
TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用ioutil.ReadAll()可以輕松地存儲(chǔ)數(shù)據(jù):
data,?err?:=?ioutil.ReadAll(r.Body)
如果您需要將data背面作為 a?io.Reader(就是這樣r.Body),那么您可以使用bytes.NewReader():
reader?:=?bytes.NewReader(data)
實(shí)際上,r.Body是一個(gè)io.ReadCloser,因此如果您需要,可以將ioutil.NopCloser()與bytes.NewReader()結(jié)合使用:
reader?:=?ioutil.NopCloser(bytes.NewReader(data))
- 1 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)
0/150
提交
取消
