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