全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Vue 2.0封装axios笔记

前言

单页面应用大多采用前后端分离开发思路,我们知道,前端和后端交互有多中方式(服务器端渲染、Ajax、websocket等),今天我们主要讲解Ajax部分。

最近团队讨论了一下,Ajax 本身跟 Vue 并没有什么需要特别整合的地方,使用 fetch polyfill 或是 axios、superagent 等等都可以起到同等的效果,vue-resource 提供的价值和其维护成本相比并不划算,所以决定在不久以后取消对 vue-resource 的官方推荐。已有的用户可以继续使用,但以后不再把 vue-resource 作为官方的 ajax 方案。

vue更新至2.0之后,官方推荐的Ajax插件库是axios,而不再是vue-resource,理由如上。

axios快速使用

如何安装请移步axios,文档描述的很清楚。

常见用法

其实我们用的最多的就是get、post请求。

Performing a GET request

// get
axios.get('/user', {
  params: {
   ID: 12345
  }
 })
 .then(function (response) {
  console.log(response);
 })
 .catch(function (error) {
  console.log(error);
 });

Performing a POST request

axios.post('/user' , {
 params: {
  firstName: 'Fred',
  lastName: 'Flintstone'
 }
})
 .then(function (response) {
  console.log(response);
 })
 .catch(function (error) {
  console.log(error);
 });

掌握了以上两种最基本的用法,我们已经可以去进行开发了。

示例demo

演示了如何使用axios请求cnode社区的API。

请点击这里

axios的封装

上一步已经实现用axios请求网络资源,那为什么要封装axios呢?

以下几点原因:

  1. 配置通用项
  2. 统一处理请求错误,进行提示

完整源码

请点击这里

请求流程


请求失败

通常请求失败有两种原因:

  1. 网络异常/服务器宕机
  2. 后端抛出错误

每个后端在请求失败时返回的数据结构大同小异,前后端可以商量好,我的后台返回给我的请求失败接口如下:

{
 "status": 1,
 "msg": "购物车为空",
 "success": false
}

如果只是普通用法,如下所示:

axios.post('/user' , {
 params: {
  firstName: 'Fred',
  lastName: 'Flintstone'
 }
})
 .then(function (response) {
  // 处理响应
  // 其中存在后端返回的错误
 })
 .catch(function (error) {
  // 网络异常引发的错误
 });

我们知道,一般中大型规模的项目,请求是比较多的,这样导致代码冗余,会越来越臃肿,我们可以对错误进行预处理。

拦截器

在普通用法中,then()处理响应,catch()处理错误,通过拦截器,可以提前判断,并返回二者之一。

这里并没有在拦截器中对错误进行处理,而是将响应或者错误返回到get/post请求的结果中,通过链式处理。

// 请求时的拦截
axios.interceptors.request.use(function (config) {
  // 发送请求之前做一些处理
  return config;
 }, function (error) {
  // 当请求异常时做一些处理
  return Promise.reject(error);
 });

// 响应时拦截
axios.interceptors.response.use(function (response) {
  // 返回响应时做一些处理
  return response;
 }, function (error) {
  // 当响应异常时做一些处理
  return Promise.reject(error);
 });

封装get,post方法

封装的get/post方法由3部分组成:


基本配置

包括请求方法,基础url,相对url,参数,超时时间,请求头等。

checkStatus()

链式处理第一步,判断http状态码是否正常,和拦截器一样,请求正常则返回响应,请求异常则返回错误,最后返回结果给checkCode()。

checkCode()

链式处理第二步,处理上一步的结果,分别处理网络异常,以及后端返回的异常。

在组件中引用

引入封装后的axios

import http from '../utils/http'
import api from '../utils/api'

使用方法

fetchData: async function () {
   let params = {
   }
   const res = await http.get(api.right, params)
   if (res.data.success) {
    alert('请求成功')
   }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue2  # axios  # 封装  # vue 


相关文章: 免费视频制作网站,更新又快又好的免费电影网站?  如何在IIS中新建站点并配置端口与IP地址?  如何用低价快速搭建高质量网站?  如何快速搭建高效可靠的建站解决方案?  如何选择适配移动端的WAP自助建站平台?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何快速搭建虚拟主机网站?新手必看指南  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  广平建站公司哪家专业可靠?如何选择?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  建站主机空间推荐 高性价比配置与快速部署方案解析  C#如何序列化对象为XML XmlSerializer用法  昆明高端网站制作公司,昆明公租房申请网上登录入口?  无锡营销型网站制作公司,无锡网选车牌流程?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  如何快速生成专业多端适配建站电话?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  建站VPS选购需注意哪些关键参数?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何通过主机屋免费建站教程十分钟搭建网站?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  宝塔面板如何快速创建新站点?  如何通过FTP空间快速搭建安全高效网站?  建设网站制作价格,怎样建立自己的公司网站?  如何快速查询网址的建站时间与历史轨迹?  建站主机与服务器功能差异如何区分?  建站之星微信建站一键生成小程序+多端营销系统  建站之星如何助力网站排名飙升?揭秘高效技巧  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  建站之星图片链接生成指南:自助建站与智能设计教程  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何有效防御Web建站篡改攻击?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  图册素材网站设计制作软件,图册的导出方式有几种?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  如何快速搭建FTP站点实现文件共享?  html制作网站的步骤有哪些,iapp如何添加网页?  建站主机SSH密钥生成步骤及常见问题解答?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  香港服务器部署网站为何提示未备案? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。