前言

单页面应用大多采用前后端分离开发思路,我们知道,前端和后端交互有多中方式(服务器端渲染、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呢?
以下几点原因:
完整源码
请点击这里
请求流程
请求失败
通常请求失败有两种原因:
每个后端在请求失败时返回的数据结构大同小异,前后端可以商量好,我的后台返回给我的请求失败接口如下:
{
"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('请求成功')
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关文章:
免费视频制作网站,更新又快又好的免费电影网站?
如何在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小时内与您取得联系。