Ajax常用封装库——Axios的使用


Posted in Javascript onMay 08, 2021

Axios 是目前应用最为广泛的 AJAX 封装库

Axios的特性有:

  • 从浏览器中创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换 JSON 数据
  • 客户端支持防御 XSRF

使用axios时,需要通过使用script标签引入:https://unpkg.com/axios/dist/axios.min.js
axios的中文网链接:Axios中文网

Axios API

向axios()传递相关配置来创建请求;

  • axios(对象格式的配置选项)
  • axios(url,config)

常用的配置项

  • url:用于请求的服务器URL
  • method:创建请求时使用的方法
  • baseURL:传递相对URL前缀,将自动加在url前面
  • headers:即将被发送的自定义请求头
  • params:即将与请求一起发送的URL参数
  • data:作为请求主体被发送的数据
  • timeout:指定请求超时的毫秒数(0表示无超时时间)
  • responseType:表示服务器响应的数据类型,默认“json”
axios().then(function(response){
 //正常请求的响应信息对象response
})
.catch(function(error){
 //捕获的错误
})

代码展示如下:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
 //使用axios方法    post请求
axios({
         url:"/pinglun",
         method:"post",
         baseURL:"http://localhost:3000",
         header:{
               "Content-Type":"application/json"
         },
        data:{
            "content":"well",
            "lyId":4
         },
    timeout:1000,
  }).then(function(res){
       console.log(res.data);
   }).catch(function(error){
       console.log(error);
})
 </script>

axios 全局默认值的配置

axios.defaults.baseURL = 'https://xxx.xxx.com';
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencode'

axios拦截器:在请求或响应被then或catch处理前拦截它们

axios 的请求拦截器

//axios 的请求拦截器
axios.interceptors.request.use(function(config){
 //配置项config
  config.params = {
        id:2 //对配置项中的params进行更改,筛选id=2
    }
   return config;//要有返回值
})
    
//axios 方法
axios("http://localhost:3000/liuyan")
.then(function(res){
      console.log(res.data);
 })
.catch(function(error){
      console.log(error);
})
    
//axios 方法
axios("http://localhost:3000/pinglun")
.then(function (res) {
    console.log(res.data);
})
.catch(function (error) {
     console.log(error);
})
//多个axios方法也可以拦截

axios 的响应拦截器

//axios 的响应拦截器
axios.interceptors.response.use(function(response){
     return(response.data);//response里有很多值,选择data即可
})
    
//axios 方法
axios("http://localhost:3000/liuyan")
.then(function (res) {
      console.log(res);//response那里拦截了,已经将数据传成data了
})
.catch(function (error) {
     console.log(error);
})

axios的快速请求方法

 axios.get(url[,config])

//axios.get(url[,config])
    
axios.get("http://localhost:3000/liuyan?id=2")
 .then(function(res){
     console.log(res.data);
})
    
axios.get("http://localhost:3000/liuyan",{
   params:{
        id:1
   }
}).then(function(res){
    console.log(res.data);
})

 axios.post(url[,data[,config]])

//axios.post(url[,data[,config]]) , post请求,添加数据
axios.post("http://localhost:3000/users",{
    name:"laowang",
    age:23,
    class:1
})

 axios.delete(url[,config])

//axios.delete(url[,config])
axios.delete("http://localhost:3000/liuyan",{
   params:{
         id:5
    }
})

 axios.put(url[,data[,config]])

//axios.put(url[,data[,config]])
axios.put("http://localhost:3000/liuyan",{
    name:"wangshisan",
    id:11
})

XMLHttpRequest2.0,html5对XMLHttpRequest类型全面升级,使其变得更加易用、强大。

onload / onprogress

  XML.onload 事件:只在请求完成时触发

  XML.onprogress 事件:只在请求进行中触发

//xhr.onload事件:只在请求完成时触发
//xhr.onprogress事件:只在请求进行中触发
var xhr = new XMLHttpRequest();
xhr.open("get","http://localhost:3000/pinglun");
xhr.onload = function(){
     console.log("load:",this.readyState);
};
xhr.onprogress = function(e){
    console.log("progress:",this.readyState);
    //在周期性请求过程中,接收到的数据个数
     console.log(e.loaded);
     //接收数据的总个数
     console.log(e.total);
}
xhr.send(null);

response属性

  以对象的形式表述响应体,其类型取决于responseType的值。根据responseType的值,来通过特定的类型请求数据。

  responseType要在调用open()初始化请求之后,在调用send()发送请求到服务器之前设置才会有效。

//XMLHttpRequest之前的response返回
//responseText
// responseXml
var xhr = new XMLHttpRequest();
xhr.open("get","http://localhost:3000/pinglun");
xhr.onload = function(){
  var data = JSON.parse(this.responseText);
          console.log(data);
   }
xhr.send(null);
           
// xhr2.0新增的response属性 
// response
// responseType
var xhr = new XMLHttpRequest();
xhr.open("get","http://localhost:3000/liuyan");
xhr.responseType = "json";
xhr.onload = function(){
    console.log(this.response);
}
xhr.send(null)

以上就是Ajax常用封装库——Axios的使用的详细内容,更多关于Ajax封装库Axios的使用的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
wordpress之js库集合研究介绍
Aug 17 Javascript
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
Feb 25 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
Jan 29 Javascript
HTML上传控件取消选择
Mar 06 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
Dec 27 Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 Javascript
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
详解如何将 Vue-cli 改造成支持多页面的 history 模式
Nov 20 Javascript
尝试自己动手用react来写一个分页组件(小结)
Feb 09 Javascript
javascript少儿编程关于返回值的函数内容
May 27 Javascript
7个你应该知道的JS原生错误类型
Apr 29 Javascript
微信小程序用户授权最佳实践指南
vue完美实现el-table列宽自适应
详解JS WebSocket断开原因和心跳机制
May 07 #Javascript
如何用threejs实现实时多边形折射
详解JS ES6编码规范
May 07 #Javascript
html5中sharedWorker实现多页面通信的示例代码
May 07 #Javascript
详解如何使用Node.js实现热重载页面
May 06 #Javascript
You might like
PHP中调用JAVA
2006/10/09 PHP
destoon二次开发入门示例
2014/06/20 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
python线程优先级队列知识点总结
2021/02/28 Python
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
2014年营业员工作总结
2014/11/18 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
首都博物馆观后感
2015/06/05 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript