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 相关文章推荐
xml转json的js代码
Aug 28 Javascript
jquery的each方法使用示例分享
Mar 25 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
Jan 02 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 Javascript
jquery实用技巧之输入框提示语句
Jul 28 Javascript
纯js实现倒计时功能
Jan 06 Javascript
JS实现列表页面隔行变色效果
Mar 25 Javascript
Angular将填入表单的数据渲染到表格的方法
Sep 22 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
JS实现的透明度渐变动画效果示例
Apr 28 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
Apr 28 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
May 15 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使用fopen创建utf8编码文件的方法
2014/10/31 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python基于分水岭算法解决走迷宫游戏示例
2017/09/26 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
python实现处理mysql结果输出方式
2020/04/09 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
幼儿园大班家长评语
2014/04/17 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers
MySQL常见优化方案汇总
2022/01/18 MySQL