4 回答
TA贡献1829条经验 获得超7个赞
可行的解决方案是使用qs包对数据进行字符串化。
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贡献1856条经验 获得超5个赞
在您的客户端请求中,您将发送一个 JSON 正文;但是在服务器上您需要 url 编码的值。
您应该更改客户端以发送正确的数据,例如像这样encoding/json
,或者您需要通过在服务器端使用包解析它来接受 JSON 正文。
TA贡献1834条经验 获得超8个赞
使用 时您不必担心字符串化axios。默认情况下,库会自动执行此操作。你应该这样做:
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 组件中调用它。
signIn(username, password)
.then(data => setState(data))
.catch(err => alert(error.message)
TA贡献1821条经验 获得超4个赞
尝试使用FormData。
const data = new FormData();
data.set('username', params.username);
data.set('password', params.password);
- 4 回答
- 0 关注
- 165 浏览
添加回答
举报