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 相关文章推荐
javascript 获取元素位置的快速方法 getBoundingClientRect()
Nov 26 Javascript
javascript在事件监听方面的兼容性小结
Apr 07 Javascript
javascript怎么禁用浏览器后退按钮
Mar 27 Javascript
jquery中子元素和后代元素的区别示例介绍
Apr 02 Javascript
javascript实现网页字符定位的方法
Jul 14 Javascript
Angularjs中使用Filters详解
Mar 11 Javascript
Vue2几种常见开局方式详解
Sep 09 Javascript
Vue自定义指令实现checkbox全选功能的方法
Feb 28 Javascript
在vue中使用css modules替代scroped的方法
Mar 10 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
Apr 25 Javascript
详解Angular cli配置过程记录
Nov 07 Javascript
深入理解 TypeScript Reflect Metadata
Dec 12 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操作XML作为数据库的类
2010/12/19 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
python如何实现数据的线性拟合
2019/07/19 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
新闻系毕业生推荐信
2013/11/16 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
节约电力资源的建议书
2014/03/12 职场文书
大学生作弊检讨书
2014/09/11 职场文书
2014年消防工作总结
2014/11/21 职场文书
教师教育心得体会
2016/01/19 职场文书
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
使用Ajax实现进度条的绘制
2022/04/07 Javascript
mysql查看表结构的三种方法总结
2022/07/07 MySQL