Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 node.js。它可以轻松地发送各种类型的 HTTP 请求,包括 POST 请求。当发送表单数据时,通常会使用 application/x-www-form-urlencoded
或 multipart/form-data
格式。
key=value
的形式,并用 &
连接。application/x-www-form-urlencoded
数据const axios = require('axios');
const qs = require('qs');
const data = {
username: 'exampleUser',
password: 'examplePassword'
};
axios.post('https://example.com/api/login', qs.stringify(data))
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('There was an error!', error);
});
multipart/form-data
数据const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('username', 'exampleUser');
form.append('avatar', fs.createReadStream('path/to/avatar.jpg'));
axios.post('https://example.com/api/upload', form, {
headers: form.getHeaders()
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('There was an error!', error);
});
原因:发送 multipart/form-data
数据时,需要手动设置请求头 Content-Type
。
解决方法:
axios.post('https://example.com/api/upload', form, {
headers: form.getHeaders()
})
原因:浏览器的同源策略限制了跨域请求。
解决方法:
原因:网络问题或服务器响应慢。
解决方法:
axios.post('https://example.com/api/login', qs.stringify(data), {
timeout: 5000 // 设置超时时间为 5 秒
})
希望这些信息对你有所帮助!如果有更多问题,欢迎继续提问。
领取专属 10元无门槛券
手把手带您无忧上云