axios 是一个基于Promise用于浏览器和node.js的HTTP客户端。
它具有以下特征:
- //客户端请求
- axios.get('http://localhost:3000/adata')
- .then(ret =>{
- //data属性名称是固定的,用于获取后台响应的数据
- console.log(ret.data)
- })
- //服务器端响应
- app.get('/adata', (req, res) => {
- res.send('Hello axios!')
- })
通过URL传递参数
- //客户端请求
- <body>
- <script type="text/javascript" src="js/axios.js"></script>
- <script type="text/javascript">
- //axios get传统url地址请求传参
- axios.get('http://localhost:3000/axios?id=123')
- .then(function (ret) {
- console.log(ret.data)
- })
- </script>
- </body>
- //服务器响应
- app.get('/axios', (req, res) => {
- res.send('axios get 传递参数' + req.query.id)
- })
- //客户端请求
- <body>
- <script type="text/javascript" src="js/axios.js"></script>
- <script type="text/javascript">
- //axios getrestful形式的url请求传参
- axios.get('http://localhost:3000/axios/456').then(function(ret){
- console.log(ret.data)
- })
- </script>
- </body>
- //服务器响应
- app.get('/axios/:id', (req, res) => {
- res.send('axios get (Restful) 传递参数' + req.params.id)
- })
- //客户端请求
- <body>
- <script type="text/javascript" src="js/axios.js"></script>
- <script type="text/javascript">
- //axios get通过params选项传递参数
- axios.get('http://localhost:3000/axios', {
- params: {
- id: 789
- }
- }).then(function (ret) {
- console.log(ret.data)
- })
- </script>
- </body>
- //服务器响应
- app.get('/axios', (req, res) => {
- res.send('axios get 传递参数' + req.query.id)
- })
参数传递方式和get相似(两种)
- //客户端请求
- <body>
- <script type="text/javascript" src="js/axios.js"></script>
- <script type="text/javascript">
- //axios post传递参数
- axios.post('http://localhost:3000/axios', {
- uname: 'xuhui那束光',
- pwd: 123
- }).then(function (ret) {
- console.log(ret.data)
- })
- </script>
- </body>
- //服务器响应
- app.post('/axios', (req, res) => {
- res.send('axios post 传递参数' + req.body.uname + '---' + req.body.pwd)
- })
- //服务器端支持
- app.use(bodyParser.json());
- //客户端请求
- <body>
- <script type="text/javascript" src="js/axios.js"></script>
- <script type="text/javascript">
- //axios post传递参数
- var params = new URLSearchParams();
- params.append('uname', 'xuhui那束光');
- params.append('pwd', '5555');
- axios.post('http://localhost:3000/axios', params).then(function(ret){
- console.log(ret.data)
- })
- </script>
- </body>
- //服务器响应
- app.post('/axios/:id', (req, res) => {
- res.send('axios put 传递参数' + req.params.id + '---' + req.body.uname + '---' + req.body.pwd)
- })
参数传递方式与post相似(选项传参和URLsearchParams传参)
- //客户端请求
- <body>
- <script type="text/javascript" src="js/axios.js"></script>
- <script type="text/javascript">
- //axios put 请求传参
- axios.put('http://localhost:3000/axios/123', {
- uname: 'xuhui那束光',
- pwd: 123
- }).then(function (ret) {
- console.log(ret.data)
- })
- </script>
- </body>
- //服务器响应
- app.put('/axios/:id', (req, res) => {
- res.send('axios put 传递参数' + req.params.id + '---' + req.body.uname + '---' + req.body.pwd)
- })
响应结果的主要属性:
- data:实际响应回来的数据
- headers:响应头信息
- status:响应状态码
- statusText:响应状态信息
- axios.get('http://localhost:3000/axios').then(function (ret) {
- console.log(ret)
- })
- //向服务器请求JSON接口
- axios.get('http://localhost:3000/axios-json').then(function (ret) {
- console.log(ret.data.uname)
- })
- //服务器端准备一个JSON接口
- app.get('/axios-json', (req, res) => {
- res.json({
- uname: 'xuhui',
- age: 12
- });
- })
通过 对象.属性名(data.uname) 可以获取对应的值
在发送请求前,可以做一些配置信息
- axios.defaults.timeout = 3000;//响应超时时间
- axios.defaults.baseURL = 'http://localhost:3000/app';//默认地址
- axios.defaults.headers[ ' mytoken' ] = 'aqwerarwrqrwqr' //设置请求头
- // 配置请求的基准URL地址
- axios.defaults.baseURL = 'http://localhost:3000/';
- //向服务器请求JSON接口
- axios.get('axios-json').then(function (ret) {
- console.log(ret.data.uname)
- })
-
- //服务器端准备一个JSON接口
- app.get('/axios-json', (req, res) => {
- res.json({
- uname: 'xuhui',
- age: 12
- });
- })
- // 配置请求的基准URL地址
- axios.defaults.baseURL = 'http://localhost:3000/';
- // 配置请求头信息
- axios.defaults.headers['mytoken'] = 'hello';
- //向服务器请求JSON接口
- axios.get('axios-json').then(function (ret) {
- console.log(ret.data.uname)
- })
-
- //服务器端准备一个JSON接口
- app.get('/axios-json', (req, res) => {
- res.json({
- uname: 'xuhui',
- age: 12
- });
- })
- //axios请求拦截器
- axios.interceptors.request.use(function(config) {
- console.log(config.url)
- config.headers.mytoken = 'nihao';
- return config;
- }, function(err){
- console.log(err)
- })
- //向服务器发起请求
- axios.get('http://localhost:3000/adata').then(function(data){
- console.log(data)
- })
- //axios响应拦截器
- axios.interceptors.response.use(function(res) {
- console.log(res)
- return res;
- }, function(err){
- console.log(err)
- })
- //向服务器发起请求
- axios.get('http://localhost:3000/adata').then(function (data) {
- console.log(data)
- })