关于前端ajax请求的优雅方案(http客户端为axios)
关于前端Ajax请求的优雅方案(http客户端为axios) 概述: 本文主要介绍了关于前端Ajax请求的优雅方案,使用http客户端为axios,以示例代码形式详细介绍了请求的优雅方案,对大家的学习或者工作具有一定的参考学习价值。 一、AJAX概述 AJAX(Asynchronous JavaScript and XML),是一种创建交互式网页应用的网页开发技术方案。异步的JavaScript:使用JavaScript语言以及相关浏览器提供的类库的功能向服务端发送请求,当服务端处理完请求之后,自动执行某个JavaScript的回调函数。 二、axios介绍 axios是一种支持Promise的API,请求成功后可以从then的Response中拿到后端返回的数据。例如:axios.get('/user/12345') .then((response) => { console.log(response); }) .catch((error) => { console.log(error); });数据在response.data中,但是实际场景后端基本不会直接把数据给我们,他会做一层封装。 三、数据处理问题 后端可能会改变数据的返回格式,从对象改为JSON字符串等,需要我们每个请求都需要多做一次处理才能拿到实际的数据。这会给开发者带来很大的麻烦。 四、使用Proxy解决问题 ES6 Proxy可以用于修改某些操作的默认行为,相当于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。 五、统一封装接口请求 使用Proxy可以对所有的接口请求做统一的封装,如此一来就算后端改来改去,我们只需修改一个地方甚至不用修改!例如:const apiService = new Proxy(axios, { get (target, propKey, receiver) { return function (...args) { return target[propKey](...args) .then((res) => { const resData = typeof res.data === 'string' ? JSON.parse(res.data) : res.data; return typeof resData.obj === 'string' ? JSON.parse(resData.obj) : resData.obj; }) .catch((err) => { throw err; }); } }}); 六、结论 本文主要介绍了关于前端Ajax请求的优雅方案,使用http客户端为axios,并使用Proxy对所有的接口请求做统一的封装,解决了数据处理问题,希望对大家的学习或者工作具有一定的参考学习价值。
- 粉丝: 7
- 资源: 904
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 360国贸纽约城市&女神像.rar
- 更新城市蔓延指数数据集(1990-2023年).xlsx
- datafor3dgs
- 安卓大作业-基于AndroidStudio开发的星座app项目源码(高分项目)
- xplore_tehb_v4.39.00_2265.com.apk
- 基于Python和Django框架的个性化书籍推荐管理系统开发
- 给你一个jingqsdfgnvsdljk
- JDK1.8版本出现SecurityException: JCE cannot authenticate the provider BC错误
- Python实现基于LSTM的日志异常检测系统源码+数据集(高分项目)
- Screenshot_20241125_185209.jpg