当前位置: 首页 > wzjs >正文

杭州优化商务服务公司seo搜索引擎优化费用

杭州优化商务服务公司,seo搜索引擎优化费用,疫情最新数据消息国内,路飞 wordpressFetch与Axios:区别、联系、优缺点及使用差异 文章目录 Fetch与Axios:区别、联系、优缺点及使用差异一、联系二、区别1. 浏览器支持与兼容性2. 响应处理3. 请求拦截和响应拦截4. 错误处理 三、优缺点1. Fetch API优点缺点 2. Axios优点缺点 四、使用上的差…

Fetch与Axios:区别、联系、优缺点及使用差异

文章目录

  • Fetch与Axios:区别、联系、优缺点及使用差异
    • 一、联系
    • 二、区别
      • 1. 浏览器支持与兼容性
      • 2. 响应处理
      • 3. 请求拦截和响应拦截
      • 4. 错误处理
    • 三、优缺点
      • 1. Fetch API
        • 优点
        • 缺点
      • 2. Axios
        • 优点
        • 缺点
    • 四、使用上的差异和特性
      • 1. 发送POST请求
      • 2. 取消请求
    • 总结

在现代Web开发中,数据交互是必不可少的环节。Fetch API和Axios是两种常用的HTTP客户端工具,用于在浏览器和Node.js环境中发起HTTP请求。下面我们来详细探讨它们的区别、联系、优缺点以及使用上的差异。

一、联系

Fetch API和Axios的主要目的都是发起HTTP请求,实现客户端与服务器之间的数据交互。它们都支持常见的HTTP方法,如GET、POST、PUT、DELETE等,并且可以处理各种类型的响应数据,如JSON、文本、二进制数据等。

二、区别

1. 浏览器支持与兼容性

  • Fetch API:是现代浏览器原生支持的API,无需额外引入库。但在旧版本的浏览器(如IE)中不支持,需要使用polyfill来实现兼容性。
  • Axios:是一个第三方库,需要引入才能使用。它支持所有主流浏览器,包括旧版本的IE,并且在Node.js环境中也能使用。

2. 响应处理

  • Fetch API:返回的是一个Promise对象,需要手动解析响应数据。例如,要获取JSON格式的响应数据,需要调用response.json()方法。
fetch('https://api.example.com/data').then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error));
  • Axios:会自动解析响应数据,默认情况下返回的就是解析后的JSON对象。
axios.get('https://api.example.com/data').then(response => console.log(response.data)).catch(error => console.error(error));

3. 请求拦截和响应拦截

  • Fetch API:本身不支持请求拦截和响应拦截,需要手动实现。
  • Axios:内置了请求拦截和响应拦截功能,可以在请求发送前和响应返回后进行一些处理,如添加请求头、错误处理等。
// 请求拦截
axios.interceptors.request.use(config => {// 在发送请求之前做些什么config.headers.Authorization = 'Bearer ' + token;return config;
}, error => {// 对请求错误做些什么return Promise.reject(error);
});// 响应拦截
axios.interceptors.response.use(response => {// 对响应数据做点什么return response;
}, error => {// 对响应错误做点什么return Promise.reject(error);
});

4. 错误处理

  • Fetch API:只有在网络请求失败时才会reject Promise,即使服务器返回404、500等状态码,Promise仍然会resolve。需要手动检查response.ok属性来判断请求是否成功。
fetch('https://api.example.com/data').then(response => {if (!response.ok) {throw new Error('Network response was not ok');}return response.json();}).then(data => console.log(data)).catch(error => console.error(error));
  • Axios:在请求失败时会reject Promise,并且会包含详细的错误信息,如状态码、错误消息等。
axios.get('https://api.example.com/data').then(response => console.log(response.data)).catch(error => {if (error.response) {// 请求已发出,但服务器响应状态码不在 2xx 范围内console.log(error.response.data);console.log(error.response.status);console.log(error.response.headers);} else if (error.request) {// 请求已发出,但没有收到响应console.log(error.request);} else {// 其他错误console.log('Error', error.message);}});

三、优缺点

1. Fetch API

优点
  • 原生支持,无需引入额外库,减少项目体积。
  • 语法简洁,符合现代JavaScript的Promise风格。
缺点
  • 浏览器兼容性差,需要polyfill。
  • 响应处理繁琐,需要手动解析。
  • 错误处理不够直观。

2. Axios

优点
  • 支持所有主流浏览器和Node.js环境。
  • 内置请求拦截和响应拦截功能,方便处理请求和响应。
  • 自动解析响应数据,错误处理更完善。
  • 支持取消请求、自动转换JSON数据等功能。
缺点
  • 需要引入第三方库,增加项目体积。

四、使用上的差异和特性

1. 发送POST请求

  • Fetch API
fetch('https://api.example.com/data', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({ key: 'value' })
}).then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error));
  • Axios
axios.post('https://api.example.com/data', { key: 'value' }).then(response => console.log(response.data)).catch(error => console.error(error));

2. 取消请求

  • Fetch API:使用AbortController实现超时取消请求。
const controller = new AbortController();
const signal = controller.signal;// 设置超时时间为3000毫秒
const timeoutId = setTimeout(() => {controller.abort();
}, 3000);fetch('https://api.example.com/data', { signal }).then(response => {clearTimeout(timeoutId);return response.json();}).then(data => console.log(data)).catch(error => {if (error.name === 'AbortError') {console.log('请求超时被取消');} else {console.error(error);}});
  • Axios:使用CancelToken实现超时取消请求。
const CancelToken = axios.CancelToken;
const source = CancelToken.source();// 设置超时时间为3000毫秒
const timeoutId = setTimeout(() => {source.cancel('请求超时被取消');
}, 3000);axios.get('https://api.example.com/data', {cancelToken: source.token
}).then(response => {clearTimeout(timeoutId);console.log(response.data);}).catch(error => {if (axios.isCancel(error)) {console.log(error.message);} else {console.error(error);}});

总结

Fetch API和Axios各有优缺点,选择使用哪一个取决于项目的具体需求。如果项目对浏览器兼容性要求不高,且希望减少依赖,可以选择Fetch API;如果需要处理复杂的请求和响应,或者需要支持旧版本的浏览器,Axios是更好的选择。

http://www.dtcms.com/wzjs/204594.html

相关文章:

  • 修改网站源码连接数据库怎么做seo搜索引擎优化实训总结
  • 做淘宝客没有网站怎么做成人速成班有哪些专业
  • 网站app客户端制作软件推广怎么赚钱
  • 做网站后期维护工资贴吧新网站怎么做推广
  • 开发一款游戏软件需要多少钱seo推广优化排名软件
  • 吉安网站优化有创意的网络广告案例
  • 高端科技网站建设5188关键词平台
  • 武汉做网站建设的公司谷歌关键词查询工具
  • 广州东莞网站建设网店怎么运营和推广
  • 广州网站建设的费用做个公司网站多少钱
  • 老太太做受网站什么平台可以推销自己的产品
  • 深圳网站建设服务找哪家武汉关键词包年推广
  • 网站排版用什么软件百度授权代理商
  • 青海网站开发 建设建网站需要什么
  • 江苏网站建设简介模板东莞做网站的联系电话
  • 品牌排名网站百度怎么做自己的网页
  • 怎样做电商网站好视频教学seo网站优化推广教程
  • 盐城有没有做网站吗免费文案素材网站
  • 长沙做网站建设公司哪家好做一个网站要花多少钱
  • 营销策划方案的写作方法汕头seo外包机构
  • 河北住建城乡建设网站百度搜索指数1000是什么
  • 网站建设服务描述今日新闻大事
  • 网站功能说明书百度竞价排名是什么意思
  • 网站建设评判标准nba最新交易新闻
  • 宁德古田建设局网站百度推广服务
  • 网站tdk优化文档搜索引擎优化不包括
  • 做个网站跳转链接怎么做爱站长尾词
  • 软件公司网站建设线上营销模式
  • 简单个人网站开发代码网站制作推广
  • 好的做网站公司沪深300指数怎么买