axios是基于Promise的HTTP客户端,可以在浏览器和Node.js中使用。
GitHub地址:https://github.com/axios/axios
安装
npm install axios
新建一个服务器并启动,做为数据请求响应的例子。
const http = require('http');
const url = require("url");
const util = require('util');
const querystring = require('querystring');
const port = 3000;
http.createServer((req, res) => {
res.statusCode = 200,
res.setHeader('Content-Type', 'text/plain;charset=utf-8');
if(req.method === 'GET') {
toGet(req, res);
}else if(req.method === 'POST') {
toPost(req, res);
}
}).listen(port, () => {
console.log(`Server listening on: http://localhost:${port}`);
});
//获取GET请求内容
function toGet(req, res){
let data = 'GET请求内容:\n' + util.inspect(url.parse(req.url));
res.end(data);
console.log(data);
}
//获取POST请求内容、cookie
function toPost(req, res){
// 定义了一个data变量,用于暂存请求体的信息
let data = '';
// 通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中
req.on('data', function(chunk){
data += chunk;
});
// 在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。
req.on('end', function(){
//data = querystring.parse(data);
//res.end('POST请求内容:\n' + util.inspect(data));
data = 'POST请求内容:\n' + data;
res.end(data);
console.log(data);
console.log('cookie内容:\n' + req.headers.cookie);
});
}
客户端axios的请求用法
GET请求用法1,不带参数。
const axios = require('axios');
axios.get('http://localhost:3000')
.then(res => {
console.log(res.data);
})
.catch(error => {
console.log(error);
});
运行结果
GET请求内容:
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: '/'
}
GET请求用法2,带参数。
const axios = require('axios');
axios.get('http://localhost:3000',{
params:{
id: 123,
name: 'aa'
}
})
.then(res => {
console.log(res.data);
})
.catch(error => {
console.log(error);
});
运行结果
GET请求内容:
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?id=123&name=aa',
query: 'id=123&name=aa',
pathname: '/',
path: '/?id=123&name=aa',
href: '/?id=123&name=aa'
}
GET请求用法3,带参数。运行结果同上。
const axios = require('axios');
axios({
method: 'get',
url: 'http://localhost:3000',
params:{
id: 123,
name: 'aa'
}
})
.then(res => {
console.log(res.data);
}).catch(error => {
console.log(error);
});
POST请求用法1。
const axios = require('axios');
axios.post('http://localhost:3000',{
id: 123,
name: 'aa'
})
.then(res => {
console.log(res.data);
})
.catch(error => {
console.log(error);
});
POST请求用法2。运行结果同上。
const axios = require('axios');
axios({
method: 'post',
url: 'http://localhost:3000',
data: {
id: '123',
name: 'aa'
}})
.then(res => {
console.log(res.data);
})
.catch(error => {
console.log(error);
});
设置默认请求的前缀地址
const axios = require('axios');
axios.defaults.baseURL = 'http://localhost:3000';
axios.get('/test?id=1')
.then(res => {
console.log(res.data);
})
.catch(error => {
console.log(error);
});
设置请求头信息
const axios = require('axios');
axios({
method: 'post',
url: 'http://localhost:3000',
data: {
id: '123',
name: 'aa'
},
headers:{
'Content-Type': 'application/json',
'Cookie': 'id=123;name=aa;'
}})
.then(res => {
console.log(res.data);
})
.catch(error => {
console.log(error);
});