当前位置:首页 > 日记 > 正文

详解Vue 2.0封装axios笔记

详解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

// getaxios.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('请求成功')   }  }

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

相关文章

微信小程序 wx.login解密出现乱码

微信小程序 wx.login解密出现乱码

解密,解决办法,出现乱码,程序,电脑软件,微信小程序 wx.login解密出现乱码的问题解决办法最近在给公司开发微信小程序,需要用到微信登录,根据文档要求需要把获取的用户信息按照AES进行解密。我使用的是官方提供的PHP demo,拷贝到程序中,测试发现…

nodejs 子进程正确的打开方式

nodejs 子进程正确的打开方式

打开方式,子进程,正确,电脑软件,nodejs,因为库太拙了,需要在 nodejs 里调用子进程来获取数据。然而看到 child_process 的文档真是头疼,这么多种启动子进程的方法直接推到人面前,也没个解释,命名也十分无用。只能一个个地查看详细说明来找到应…

node.js实现回调的方法示例

node.js实现回调的方法示例

方法,回调,示例,电脑软件,node,本文实例讲述了node.js实现回调的方法。分享给大家供大家参考,具体如下:向回调函数传递额外的参数在调用函数中,使用匿名函数中实现需传递的参数,再次匿名函数内调用回调函数。var events = require("events");…

ps如何调整的色阶

ps如何调整的色阶

调整,方法,的色,图片,电脑软件,  图层的色阶在ps中经常会调节,这样可以调出好看的图片。其实这个也不算太难,下面就让小编告诉你ps如何调整图片的色阶的方法,一起学习吧。ps调整图片的色阶的方法1.选定要调整的图层,如下图:2.图像--调整--色阶…

JS中使用gulp实现压缩文件及浏览器

JS中使用gulp实现压缩文件及浏览器

热加载,压缩文件,浏览器,功能,电脑软件,gulp类似于grunt,都是基于Node.js的前端构建工具。不过gulp压缩效率更高。一.安装gulp  首先,你要安装过nodejs,如果没有安装过的同学请自行下载。 先再命令行里输入 npm install gulp -g 下载gu…

es6的数字处理的方法(5个)

es6的数字处理的方法(5个)

方法,数字处理,电脑软件,// Math.trunc方法用于去除一个数的小数部分,返回整数部分。 Math.trunc(4.1) // 4 Math.trunc(4.9) // 4 Math.trunc(-4.1) // -4 Math.trunc(-4.9) // -4 Math.trunc(NaN); // NaN Math.trunc('foo'); // NaN Ma…

如何将word2013转成PDF

如何将word2013转成PDF

转成,如何将,电脑软件,PDF,  我们在使用Word2013编辑好Word文档资料后,需要把文档资料转换成为PDF格式的文件。那么,在这种情况下我们应该怎样做呢?那么下面就由小编给大家分享下将word2013转成PDF的技巧,希望能帮助到您。将word2013转成PDF…

简述Ajax的优点与缺点

简述Ajax的优点与缺点

缺点,优点,电脑软件,Ajax,ajax的优点Ajax的给我们带来的好处大家基本上都深有体会,在这里我只简单的讲几点:1、最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好。2、使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅…

微信小程序实现放大预览功能

微信小程序实现放大预览功能

功能,程序,电脑软件,微信小,需求:当点击图片时,当前图片放大预览,且可以左右滑动实现方式:使用微信小程序图片预览接口我们可以看到api需要两个参数,分别通过下面的data-list和data-src来传到js中wxml代码:<!--图片描述--> <view wx:if="{{item.…

Fireworks如制作折叠效果的菜单

Fireworks如制作折叠效果的菜单

菜单,折叠,效果,电脑软件,Fireworks,现在菜单效果越来越炫,如何实现折叠的效果呢,就几步,很简单,下面我们来看看吧!步骤:1、&ldquo;文件&rdquo;----&ldquo;新建&rdquo;一个图形,尺寸是150x350,当然可以按照需要定义。2、选中左侧的&ldquo;矩形工具&…

怎么在word2007中设置大纲的级别wo

怎么在word2007中设置大纲的级别wo

设置,级别,操作方法,步骤,大纲,  在编辑文档的时候,目录有时是必不可少的一项,但在实际情况当中,那么今天小编就教你怎么在word2007中设置大纲的级别。word2007中设置大纲的级别的步骤选择&ldquo;视图&ldquo;选项卡word2007中设置大纲的级别…

Excel表格中RANK函数怎么做成绩排

Excel表格中RANK函数怎么做成绩排

函数,成绩排名,怎么做,表格,成绩,  当你用excel时需要根据成绩或者业绩进行排序的时候,你是否还在一个一个的比照呢,那样就太没效率了。以下是小编为您带来的关于Excel中RANK函数做成绩排名,希望对您有所帮助。Excel中RANK函数做成绩排名使…