请说明Ajax、Fetch、Axios三者的区别
队列则不同,它基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影像数据结构,速度要快的多。栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性。看到“请说明Ajax、Fetch、Axios三者的区别”这个问题我就想起来另一个面试题:栈、队列、数组有什么区别?1、A
相同点:
1、三者都用于网络请求,但是不同维度
2、 Ajax(Asynchronous Javascript and XML),一种技术的统称,并不是实际的API
3、Fetch是一个具体的API,浏览器里面直接有一个API就叫Fetch
4、 Axios是一个第三方库,可以安装使用
Fetch
1、Fetch是浏览器原生API,用于网络请求
2、和XMLHttpRequest是一个级别的
3、Fetch语法更加简洁、易用、支持Promise
4、Fetch是XMLHttpRequest的升级版本
Ajax
1、Ajax只是个技术统称,可以用XMLHttpRequest来实现Ajax,也可以用用Fetch来实现Ajax
Axios
1、常用的网络请求库lib,随着VUE爆火起来的
2、在node.js中也可以使用
3、内部可用XMLHttpRequest和Fetch来实现
axios提供了以下常用的方法:
axios.request(config)
:发送请求并返回一个promise对象,config是请求配置选项。axios.get(url[, config])
:发送GET请求并返回一个promise对象,url为请求的url,config为请求配置选项。axios.delete(url[, config])
:发送DELETE请求并返回一个promise对象,url为请求的url,config为请求配置选项。axios.head(url[, config])
:发送HEAD请求并返回一个promise对象,url为请求的url,config为请求配置选项。axios.post(url[, data[, config]])
:发送POST请求并返回一个promise对象,url为请求的url,data为请求的参数,config为请求配置选项。axios.put(url[, data[, config]])
:发送PUT请求并返回一个promise对象,url为请求的url,data为请求的参数,config为请求配置选项。axios.patch(url[, data[, config]])
:发送PATCH请求并返回一个promise对象,url为请求的url,data为请求的参数,config为请求配置选项。
另外10个axios的方法:
- axios.interceptors.request.use:在发送请求之前对请求进行拦截和处理。
- axios.interceptors.response.use:对响应进行拦截和处理。
- axios.all:同时执行多个并发请求。
- axios.spread:将多个并发请求的结果合并。
- axios.create:创建一个自定义配置的axios实例。
- axios.CancelToken:取消请求。
- axios.isCancel:判断是否为取消请求的错误。
- axios.defaults:设置全局默认配置。
- axios.getUri:获取一个完整的请求URL。
- axios.allSettled:类似于Promise.all,不同的是无论任何请求是否失败都会返回一个fulfilled状态。
此外,axios还提供了以下功能:
- 支持Promise API。
- 自动转换JSON数据。
- 提供了拦截器,可以在请求或响应被then或catch处理前拦截它们。
- 提供了取消请求的方法。
- 支持跨域请求。
- 支持设置默认请求头和全局配置。
- 支持Node.js和浏览器。
- 支持请求的进度显示。
这些方法和功能可以满足绝大部分的HTTP请求需求。
库lib和API的区别是什么?
1、API是原生的函数
2、lib库是一个第三方的工具
3、实际项目中尽量使用现成第三方lib库,不要自己造轮子
在服务器端用axios,但浏览器端axios、fetch、XMLHttpRequest都可以用
不同的发送HTTP请求的方法之间有以下特性、差异和相同点:
差异:
- XMLHttpRequest: XMLHttpRequest API的设计非常底层,需要手动处理请求和响应数据,操作复杂。并且,需要处理的HTTP请求的各种特性(如请求头、超时时间、进度监控)需要进行更多的代码编写。
- Fetch API: Fetch API的设计更为高层,提供了更简洁的API,使用起来更加方便。Fetch API支持Promise,使得异步请求的处理更加方便。但是,Fetch API在某些情况下(如请求的进度监控)可能没有XMLHttpRequest提供的更多的选项。
- Axios: Axios的设计旨在提供一种更加高级和易用的HTTP请求处理方式,提供了丰富的API和更好的错误处理。Axios支持拦截器,使得请求和响应的处理更加方便。但是,Axios需要添加到项目中,需要额外的依赖。
看到“请说明Ajax、Fetch、Axios三者的区别”这个问题我就想起来另一个面试题:栈、队列、数组有什么区别?
在这里也做个笔记,复习的时候一起复习。
栈和队列是一种思想,而数组是一种数据结构,也是维度不同。栈和队列可以用数组实现,也可以用别的方法实现,只是一种思想。
栈与队列的相同点
1、他们都属于线性表。线性表的特点是数据元素之间存在“一对一”的关系
2、栈和队列都是操作受限制的线性表。
都只能在线性表的端点插入和删除
栈与队列的不同点
1、队列是先进先出(FIFO),栈是后进先出(LIFO)。2、对插入和删除操作的"限定"不同:
栈是限定只能在表的一端进行插入和删除操作的线性表;
队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。
3、遍历数据速度不同
栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性。
队列则不同,它基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影像数据结构,速度要快的多。
数组与队列的区别
1、数组
数组是最最基本的数据结构,数组是使用一块连续的内存空间保存数据,保存的数据的个数在分配内存的时候就是确定的。数组可以在任意位置插入或者删除数据,插入或删除的时候后面的数据全部需要移动,移动的数据还是和数据个数有关。
数组有一维数组和二维数组。
2、队列
队列可以用数组和链表来实现,队列只允许在队尾添加数据,在对头删除数据。还有一种双端队列,在两端都可以插入和删除。
更多推荐
所有评论(0)