第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我有一個中間件鏈,但 Request BODY 與第一個

我有一個中間件鏈,但 Request BODY 與第一個

Go
手掌心 2022-05-05 16:13:58
我有 2 個中間件和最終的 HandleFunc。但 Request.Body 僅適用于第一個中間件。當?shù)诙€開始時,身體是空的。會發(fā)生什么?這是我對路線的呼吁。router.HandleFunc("/registro", middleW.Validaciones(middleW.UsuarioYaExiste(routes.Registro))).Methods("POST")第一個中間件是func Validaciones (next http.HandlerFunc) http.HandlerFunc {    return func(w http.ResponseWriter, r *http.Request)  {        if bd.ChequeoConnection()==0 {           http.Error(w,"Conexión Perdida con la Base de Datos",500)           return        }         var t models.Usuario        err := json.NewDecoder(r.Body).Decode(&t)        http.Error(w,"Nombre "+t.Nombre+" - Email "+t.Email+" - Password "+t.Password, 400)        if err != nil {            mensaje:="Validaciones : Usuario y/o Contrase?a inválidos <br> Password ="+t.Password+"<br>Email = "+t.Email+"<br>Nombre = "+t.Nombre            http.Error(w, mensaje, 400)            return        }        if len(t.Email)==0 {            http.Error(w, "El email de usuario es requerido", 400)            return        }        if len(t.Password)<6 {            http.Error(w, "Debe especificar una contrase?a de al menos 6 caracteres", 400)            return        }        /* si todo estuvo OK devuelve la función de la Ruta */        next.ServeHTTP(w, r)    }}這是第二個中間件func UsuarioYaExiste (next http.HandlerFunc) http.HandlerFunc {    return func(w http.ResponseWriter, r *http.Request)  {        var t models.Usuario        err := json.NewDecoder(r.Body).Decode(&t)        http.Error(w,"Nombre 1ro. "+t.Nombre+" - Email "+t.Email+" - Password "+t.Password, 400)        if err != nil {            mensaje:="UsuarioYaExiste : Usuario y/o Contrase?a inválidos <br> Password ="+t.Password+"<br>Email = "+t.Email+"<br>Nombre = "+t.Nombre            http.Error(w, mensaje, 400)            return        }    }}在這第二個中間件中,這一行http.Error(w,"Nombre 1ro. "+t.Nombre+" - Email "+t.Email+" - Password "+t.Password, 400)顯示空值,但不在第一個中間件中。
查看完整描述

1 回答

?
浮云間

TA貢獻1829條經(jīng)驗 獲得超4個贊

HTTP 請求體是一個流,你只能讀取一次。您的第一個中間件讀取正文,因此您的第二個中間件沒有任何內(nèi)容。

驗證中間件中的主體可能不是您嘗試做的最佳解決方案。我建議您刪除中間件,解組處理程序中的主體,并將中間件重構(gòu)為實用程序函數(shù),您可以將解組消息傳遞到該實用程序函數(shù)中,以便它可以做它需要做的事情。


查看完整回答
反對 回復 2022-05-05
  • 1 回答
  • 0 關(guān)注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號