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');
})

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
在您的客戶端請求中,您將發(fā)送一個(gè) JSON 正文;但是在服務(wù)器上您需要 url 編碼的值。
您應(yīng)該更改客戶端以發(fā)送正確的數(shù)據(jù),例如像這樣encoding/json
,或者您需要通過在服務(wù)器端使用包解析它來接受 JSON 正文。

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)

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);
- 4 回答
- 0 關(guān)注
- 226 瀏覽
添加回答
舉報(bào)