axios面试题总结

axios 是什么

1. Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。前端最流行的 ajax 请求库,
2. react/vue 官方都推荐使用 axios 发 ajax 请求

axios 特点

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

axios 常用语法

  • axios(config): 通用/最本质的发任意类型请求的方式
  • axios(url[, config]): 可以只指定 url 发 get 请求
  • axios.request(config): 等同于 axios(config)
  • axios.get(url[, config]): 发 get 请求
  • axios.delete(url[, config]): 发 delete 请求
  • axios.post(url[, data, config]): 发 post 请求
  • axios.put(url[, data, config]): 发 put 请求
  • axios.defaults.xxx: 请求的默认全局配置
  • axios.interceptors.request.use(): 添加请求拦截器
  • axios.interceptors.response.use(): 添加响应拦截器
  • axios.create([config]): 创建一个新的 axios(它没有下面的功能)
  • axios.Cancel(): 用于创建取消请求的错误对象
  • axios.CancelToken(): 用于创建取消请求的 token 对象
  • axios.isCancel(): 是否是一个取消请求的错误
  • axios.all(promises): 用于批量执行多个异步请求
  • axios.spread(): 用来指定接收所有成功数据的回调函数的方法

axios为什么既能在浏览器环境运行又能在服务器(node)环境运行?

axios在浏览器端使用XMLHttpRequest对象发送ajax请求;在node环境使用http对象发送ajax请求。

var defaults.adapter = getDefaultAdapter();
function getDefaultAdapter () {
	var adapter;
    if (typeof XMLHttpRequest !== 'undefined') {
    	// 浏览器环境
        adapter = require('./adapter/xhr');
    } else if (typeof process !== 'undefined') {
    	// node环境
        adapter = require('./adapter/http');
    }
   return adapter;
}

上面几行代码,可以看出:XMLHttpRequest 是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能;process 对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程。原来作者是通过判断XMLHttpRequest和process这两个全局变量来判断程序的运行环境的,从而在不同的环境提供不同的http请求模块,实现客户端和服务端程序的兼容。

axios相比原生ajax的优点

ajax的缺点

  • 本身是针对MVC的编程,不符合现在前端MVVM的浪潮
  • 基于原生的XHR开发,XHR本身的架构不清晰。
  • JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务)
  • 不符合关注分离(Separation of Concerns)的原则
  • 配置和调用方式非常混乱,而且基于事件的异步模型不友好。
  • 17
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当谈到关于axios面试题时,有几个常见的问题可以被问到: 1. 什么是axiosaxios是一个基于Promise的HTTP客户端,可以用于浏览器和Node.js环境中发送HTTP请求。 2. 如何在浏览器中使用axios? 首先,你需要将axios库引入到你的项目中。可以通过使用CDN链接或者在模块化项目中使用npm安装axios包来实现。然后,你可以直接在你的代码中使用axios对象来发送请求。 3. 如何发送GET请求? 使用axios发送GET请求非常简单。你可以使用axios的get方法,并传递URL作为参数来发送GET请求。例如: ``` axios.get('/api/users') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); ``` 4. 如何发送POST请求? 使用axios发送POST请求也很简单。你可以使用axios的post方法,并传递URL和要发送的数据作为参数来发送POST请求。例如: ``` axios.post('/api/users', { name: 'John Doe', email: 'john.doe@example.com' }) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); ``` 5. 如何处理响应结果和错误? axios返回的是一个Promise对象,所以你可以使用.then()和.catch()方法来处理成功和失败的回调。在.then()回调中,你可以访问响应的数据,而在.catch()回调中,你可以处理错误。 这些是一些常见的关于axios面试题,希望对你有帮助!如果你有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wflynn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值