1.什么是fetch?
fetch是一个用于在JavaScript中发出HTTP请求的对象,它是XMLHttpRequest的替代品,提供了更具可扩展性和高效性的功能。fetch返回的是一个Promise对象,可以通过链式调用来处理响应结果。fetch不属于ES标准,而是一个单独的Web API.
2.fetch和axios有什么区别?
fetch和axios都是用于在JavaScript中发送HTTP请求的库,但是它们有一些区别,主要有以下几点:
- fetch是一个浏览器原生提供的对象,不需要额外安装,而axios是一个第三方库,需要通过npm或者cdn引入。
- fetch返回的是一个未处理的方法集合,需要通过调用不同的方法来获取不同类型的数据,例如response.json()或者response.text()。而axios返回的是一个已经解析为json格式的数据对象。
- fetch默认不会发送或接收任何cookies,需要手动设置credentials选项。而axios默认会在同源请求中发送cookies,并且可以自动转换JSON数据。
- fetch只对网络请求报错,对400或500等状态码不会报错,需要手动判断并抛出异常。而axios会对状态码进行判断,并根据不同情况返回resolve或reject。
- axios具有一些fetch没有的特性,例如拦截器、取消请求、防御XSRF等。