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中Object和Function的关系小结
Sep 26 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
Jun 21 Javascript
JQuery解析HTML、JSON和XML实例详解
Mar 29 Javascript
再谈Jquery Ajax方法传递到action(补充)
May 12 Javascript
JavaScript事件委托实例分析
May 26 Javascript
js预加载图片方法汇总
Jun 15 Javascript
七个不允许错过的jQuery小技巧
Dec 21 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
Nov 09 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
Nov 16 Javascript
解析Javascript单例模式概念与实例
Dec 05 Javascript
微信小程序实现倒计时60s获取验证码
Apr 17 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
May 19 jQuery
微信小程序用户授权最佳实践指南
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截取中文字符串的问题
2006/07/12 PHP
php中cookie的作用域
2008/03/27 PHP
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
python实现随机梯度下降(SGD)
2020/03/24 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
python中的json总结
2018/10/11 Python
Python缓存技术实现过程详解
2019/09/25 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
Python程序暂停的正常处理方法
2019/11/07 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
python实现数字炸弹游戏
2020/07/17 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
报告会主持词
2014/04/02 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
学生党员检讨书范文
2014/12/27 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python