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 相关文章推荐
ajax的hide隐藏问题解决方法
Dec 11 Javascript
JS获取浏览器版本及名称实现函数
Apr 02 Javascript
js展开闭合效果演示代码
Jul 24 Javascript
javascript获取ckeditor编辑器的值(实现代码)
Nov 18 Javascript
jQuery内置的AJAX功能和JSON的使用实例
Jul 27 Javascript
简单的jquery左侧导航栏和页面选中效果
Aug 21 Javascript
Javascript中的默认参数详解
Oct 22 Javascript
AngularJS中的过滤器filter用法完全解析
Apr 22 Javascript
jQuery深拷贝Json对象简单示例
Jul 06 Javascript
Vue2单一事件管理组件通信
May 09 Javascript
vue translate peoject实现在线翻译功能【新手必看】
Jun 07 Javascript
ES6 十大特性简介
Dec 09 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与MySQL交互使用详解
2006/10/09 PHP
几种显示数据的方法的比较
2006/10/09 PHP
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
php实现修改新闻时删除图片的方法
2015/05/12 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
javascript Object与Function使用
2010/01/11 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
Python代码调试的几种方法总结
2015/04/15 Python
Python3.2模拟实现webqq登录
2016/02/15 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
python绘制中国大陆人口热力图
2018/11/07 Python
Python 判断奇数偶数的方法
2018/12/20 Python
Pytorch之parameters的使用
2019/12/31 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
html5实现滑块功能之type=&quot;range&quot;属性
2020/02/18 HTML / CSS
联想中国官方商城:Lenovo China
2017/10/18 全球购物
《画风》教学反思
2014/04/16 职场文书
餐饮店长岗位职责
2015/04/14 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python