axios
在日常开发中,ajax请求是必不可少的。
本章目标
针对以上场景二次封装,减少代码量,并优化用户体验。 例:
// 新增或编辑数据时
// 验证表单
form.validate((valid: any) => {
if (valid) {
// 提交数据的ajax函数
submitFun(params).then((res: any) => {
// 业务成功后逻辑
})
}
});
// 登录时
// 验证表单
form.validate((valid: any) => {
if (valid) {
// 提交数据的ajax函数
submitFun(params).then((res: any) => {
// 业务成功后逻辑
// 登录成功后逻辑
}).catch(() => {
// 业务失败后逻辑
// 刷新验证码等逻辑
});
}
});具体实现
加载遮罩
在实际交互中,请求数据时为了避免频繁请求和提升用户体验,我们会在请求时加一个遮罩。 在这里我们基于element-ui的Loading组件封装一个遮罩类
基于axios和element-ui的Message组件,以及遮罩类封装request类
鉴权
前后端分离开发是现在主流开发模式,那么用户登录后在每次请求时都需要先后端提交token进行鉴权 在这里我们通过cookie保存token信息,这里先封装一个cookie类
在这里我们可以再次封装request类
常用请求封装
模拟请求
在实际开发过程中,可能会存在开发时后端并未介入的情况,我们可以在request类新增一个模拟异步方法。这样只需要和后端预定好数据格式和字段名称即可开发,减少不必要的等待时间。
如果以业务逻辑来区分ajax请求,一般分为一下几种
发起请求后,业务成功才执行后续动作,可能会有提示信息。业务失败一般都会有提示信息。多用于数据的增删改查.
发起请求后,业务失败和成功分别有不同的后续业务动作,一般都会有提示信息。多用于业务流处理,登录等场景。
针对以上场景,我们可以先封装一个基类方法,这个方法用来处理后端返回的数据,业务失败和成功分别走不同的逻辑,在使用时我们只需要通过then()与catch()来区分即可
在这个基础方法中我们对后端数据进行了处理,并针对常用场景进行了配置化处理,但是这个方法并不推荐直接使用,我们需要针对这个方法再次扩展一个针对场景2的方法
对于场景1,我们可以在场景2的基础上二次封装,一般来说可以分为get、post两个方法
另外你也可以根据业务需求再次封装一些常用场景,例:
使用
假如我们有一个系统模块,针对不同接口我们可以这样定义,例:
通过封装request类,我们可以做到用最少的代码来应对最多变的后端🐶
结语
本文主要针对pc端场景进行了封装,那么移动端应该如何封装呢?
本文对每个请求都做了自动遮罩处理,那么是否存在不需要自动遮罩的场景,这种需求如何处理?
上一章我们讲了数据代理如何实现,那么在实际场景中,本章内容如何与数据代理结合使用?
假如后端返回的数据格式五花八门,格式不统一,如何处理?
最后更新于
这有帮助吗?