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

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

axios post請求主體不與mux服務(wù)器解析

axios post請求主體不與mux服務(wù)器解析

Go
手掌心 2023-08-14 16:43:17
我已經(jīng)實(shí)現(xiàn)了一個(gè) API,可以對用戶進(jìn)行身份驗(yàn)證,以便使用 Go 來響應(yīng)客戶端。身份驗(yàn)證路由的處理程序如下:func (app *application) authenticate(w http.ResponseWriter, r *http.Request) {    err := r.ParseForm()    if err != nil {        app.clientError(w, http.StatusBadRequest)        return    }    username := r.PostForm.Get("username")    password := r.PostForm.Get("password")    fmt.Println(r.PostForm)    u, err := app.user.Get(username, password)    if err != nil {        if errors.Is(err, models.ErrNoRecord) || errors.Is(err, bcrypt.ErrMismatchedHashAndPassword) {            app.notFound(w)        } else {            app.serverError(w, err)        }        return    }    token := jwt.New(jwt.SigningMethodHS256)    claims := token.Claims.(jwt.MapClaims)    claims["username"] = u.Username    claims["name"] = u.Name    claims["exp"] = time.Now().Add(time.Minute * 30).Unix()    ts, err := token.SignedString(app.secret)    if err != nil {        app.serverError(w, err)        return    }    user := models.UserResponse{u.ID, u.Username, u.Name, "Admin", ts}    js, err := json.Marshal(user)    if err != nil {        app.serverError(w, err)        return    }    w.Header().Set("Content-Type", "application/json")    w.Write(js)}我正在嘗試使用 Axios 從 React 應(yīng)用程序向 API 發(fā)送發(fā)布請求,如下所示,const data = JSON.stringify({    username: params.username,    password: params.password,});api.post('/authenticate', data, {    headers: {'Content-Type': 'application/json' }}).then(response => {    console.log(response);    resolve({ ok: true, json: () => response.data });}).catch(err => {    console.log(err);    reject('Username or password is incorrect');})但請求返回 404 錯(cuò)誤。Go控制臺顯示發(fā)布數(shù)據(jù)為空map[]我嘗試將Axios請求中的Content-Type標(biāo)頭更改為multipart/form-data和application/x-www-form-urlencoded,但沒有成功。當(dāng)使用 CURL 發(fā)出請求時(shí),curl -d "username=user&password=password" -X POST http://localhost:4000/authenticate該請求返回正確的響應(yīng)。郵遞員也工作得很好。僅從 axios 發(fā)出請求時(shí),Go 中未解析請求正文可能會出現(xiàn)什么問題?
查看完整描述

4 回答

?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

可行的解決方案是使用qs包對數(shù)據(jù)進(jìn)行字符串化。


import qs from 'qs';


const data = {

    username: params.username,

    password: params.password,

};


api.post('/authenticate', qs.stringify(data)

).then(response => {

    console.log(response);

    resolve({ ok: true, json: () => response.data });

}).catch(err => {

    console.log(err);

    reject('Username or password is incorrect');

})


查看完整回答
反對 回復(fù) 2023-08-14
?
RISEBY

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊

在您的客戶端請求中,您將發(fā)送一個(gè) JSON 正文;但是在服務(wù)器上您需要 url 編碼的值。

您應(yīng)該更改客戶端以發(fā)送正確的數(shù)據(jù),例如像這樣encoding/json,或者您需要通過在服務(wù)器端使用包解析它來接受 JSON 正文。


查看完整回答
反對 回復(fù) 2023-08-14
?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

使用 時(shí)您不必?fù)?dān)心字符串化axios。默認(rèn)情況下,庫會自動執(zhí)行此操作。你應(yīng)該這樣做:


import axios from 'axios';


const api = axios.create({

   baseUrl: 'http://localhost:4000/api' 

})

async signIn(username, password) {

   try {

      const resp = await api.post('/authenticate', data);

      return resp.data

   } catch(error) {

      throw new Error(error?.message || "something went wrong")

   }

}    

然后你可以在 React 組件中調(diào)用它。


signIn(username, password)

   .then(data => setState(data))

   .catch(err => alert(error.message)


查看完整回答
反對 回復(fù) 2023-08-14
?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

嘗試使用FormData。


const data = new FormData();

data.set('username', params.username);

data.set('password', params.password);


查看完整回答
反對 回復(fù) 2023-08-14
  • 4 回答
  • 0 關(guān)注
  • 226 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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