一、Axios是什么?

  • axios是基于Promise的http库,用于浏览器和node中
  • 主要是向后台发送请求的,支持promise
  • 如果是浏览器会基于XMLHttpRequest实现axios。如果是node.js就会基于node内置核心模块http实现axios

二、axios 特点

  1. 基于 promise 的异步 ajax 请求库,支持promise所有的API
  2. 浏览器端/node 端都可以使用,浏览器中创建XMLHttpRequests
  3. 支持请求/响应拦截器
  4. 支持请求取消
  5. 可以转换请求数据和响应数据,并对响应回来的内容自动转换成 JSON类型的数据
  6. 批量发送多个请求
  7. 安全性更高,客户端支持防御 XSRF,就是让你的每个请求都带一个从cookie中拿到的key, 根据浏览器同源策略,假冒的网站是拿不到你cookie中得key的,这样,后台就可以轻松辨别出这个请求是否是用户在假冒网站上的误导输入,从而采取正确的策略。

三、常用语法

  • axios.get(url[, config]): 发 get 请求
  • axios.delete(url[, config]): 发 delete 请求
  • axios.post(url[, data, config]): 发 post 请求
  • axios.put(url[, data, config]): 发 put 请求
  • axios.interceptors.request.use(): 添加请求拦截器
  • axios.interceptors.response.use(): 添加响应拦截器
  • axios.all(promises): 用于批量执行多个异步请求
  • axios.CancelToken(): 用于创建取消请求的 token 对象
  • axios.all(promises): 用于批量执行多个异步请求
  • axios.spread(): 用来指定接收所有成功数据的回调函数的方法

四、为什么使用Axios?

Axios非常适合前后端数据交互,而另一种请求后端数据的方式是vue-resource,vue-resource已经不再更新了,并且只支持浏览器端使用,而Axios同时支持浏览器和Node端使用。

五、axios为什么技能在浏览器环境运行又能在服务器node环境运行

作者通过判断XMLHttpRequest和process,这两个全局变量来判断程序的运行环境的
XMLHttpRequest
浏览器内置的一个对象,它为客户端提供了在客户端和服务器之间传输数据的功能
process
是node内置的一个全局变量,提供有关信息,控制当前Node.js进程url

  1. function getDefaultAdapter() {
  2. var adapter;
  3. if (typeof XMLHttpRequest !== undefined‘) {
  4. //通过判断XMLHttpRequest是否存在,来判断是否是浏览器环境
  5. adapter = require(‘./adapters/xhr‘);
  6. } else if (typeof process !== undefined‘) {
  7. //通过判断process是否存在,来判断是否是node环境
  8. adapter = require(‘./adapters/http‘);
  9. }
  10. return adapter;
  11. }

六、axios相关配置属性

url用于请求的服务器url
method 创建请求时使用的方法 默认是get
proxy:代理服务器的主机名和端口
baseUrl将自动加在url前面,除非url是一个绝对URL,可以通过设置一个baseUrl方便为axios实例的方法传递相对URL
transformRequest 允许向服务器发送前,修改请求数据,get/post/put/delete
headers即将被发送的自定义请求头

七、axios,fetch,ajax(jquery)的区别

  • 前两者是基于promise,后者主要是利用callback的形式 ,以链式的方式去编写,拯救了我们的回调地狱的这样的方法
  • axios和ajax主要是基于XMLHttpRequest这个对象基于编写的,
  • fetch脱离了xhr,是新的语法,默认不传cookie,另外不像xhr,可以监听到请求的进度

https://www.kancloud.cn/shoil/qiandaun/909188
https://blog.csdn.net/qq_44722915/article/details/109627038