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 相关文章推荐
js 获取元素下面所有li的两种方法
Apr 14 Javascript
简介JavaScript中的setDate()方法的使用
Jun 11 Javascript
php基于redis处理session的方法
Mar 14 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
Oct 20 Javascript
JQuery 获取Dom元素的实例讲解
Jul 08 jQuery
ES6中Array.includes()函数的用法
Sep 20 Javascript
ES6 javascript中Class类继承用法实例详解
Oct 30 Javascript
解决vue路由后界面没有变化,但是链接有的问题
Sep 01 Javascript
基于Vue 实现一个中规中矩loading组件
Apr 03 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
Sep 24 Javascript
javascript 设计模式之组合模式原理与应用详解
Apr 08 Javascript
HTML元素拖拽功能实现的完整实例
Dec 04 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实现通用alert函数的方法
2015/03/11 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
python记录程序运行时间的三种方法
2017/07/14 Python
Anaconda入门使用总结
2018/04/05 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
wxpython绘制音频效果
2019/11/18 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
公司营业员的自我评价
2014/03/04 职场文书
医院护士工作检讨书
2014/10/26 职场文书
租车协议书
2015/01/27 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
python实现学员管理系统(面向对象版)
2022/06/05 Python
Python find()、rfind()方法及作用
2022/12/24 Python