1.使用Typescript重构axios(一)——写在最前面
2.使用Typescript重构axios(二)——项目起手,跑通流程
3.使用Typescript重构axios(三)——实现基础功能:处理get请求url参数
4.使用Typescript重构axios(四)——实现基础功能:处理post请求参数
5.使用Typescript重构axios(五)——实现基础功能:处理请求的header
6.使用Typescript重构axios(六)——实现基础功能:获取响应数据
7.使用Typescript重构axios(七)——实现基础功能:处理响应header
8.使用Typescript重构axios(八)——实现基础功能:处理响应data
9.使用Typescript重构axios(九)——异常处理:基础版
10.使用Typescript重构axios(十)——异常处理:增强版
11.使用Typescript重构axios(十一)——接口扩展
12.使用Typescript重构axios(十二)——增加参数
13.使用Typescript重构axios(十三)——让响应数据支持泛型
14.使用Typescript重构axios(十四)——实现拦截器
15.使用Typescript重构axios(十五)——默认配置
16.使用Typescript重构axios(十六)——请求和响应数据配置化
17.使用Typescript重构axios(十七)——增加axios.create
18.使用Typescript重构axios(十八)——请求取消功能:总体思路
19.使用Typescript重构axios(十九)——请求取消功能:实现第二种使用方式
20.使用Typescript重构axios(二十)——请求取消功能:实现第一种使用方式
21.使用Typescript重构axios(二十一)——请求取消功能:添加axios.isCancel接口
22.使用Typescript重构axios(二十二)——请求取消功能:收尾
23.使用Typescript重构axios(二十三)——添加withCredentials属性
24.使用Typescript重构axios(二十四)——防御XSRF攻击
25.使用Typescript重构axios(二十五)——文件上传下载进度监控
26.使用Typescript重构axios(二十六)——添加HTTP授权auth属性
27.使用Typescript重构axios(二十七)——添加请求状态码合法性校验
28.使用Typescript重构axios(二十八)——自定义序列化请求参数
29.使用Typescript重构axios(二十九)——添加baseURL
30.使用Typescript重构axios(三十)——添加axios.getUri方法
31.使用Typescript重构axios(三十一)——添加axios.all和axios.spread方法
32.使用Typescript重构axios(三十二)——写在最后面(总结)
项目源码请猛戳这里!!!
1. 前言
在第6篇文章的最后遗留问题中,我们还看到如果我们不去设置 responseType 的情况下,当服务端返回给我们的数据是字符串类型:
data: "{"a":1,"b":2}"
而我们应该将其默认的转化成对象的形式:
{ a: 1, b: 2 }
所以,接下来我们就要将字符串处理成对象形式。
2. 实现transformResponse函数
根据需求分析,我们要实现一个 transformResponse 工具函数。我们在 src/helpers/data.ts 中实现该函数:
export function transformResponse(data: any): any { if (typeof data === "string") { try { data = JSON.parse(data); } catch (e) { // do nothing } } return data; }
3. 利用transformResponse函数处理响应data
函数实现好之后,我们就可以用它来处理返回的响应 data 了,在 src/index.ts 中:
function axios(config: AxiosRequestConfig): AxiosPromise { processConfig(config); return xhr(config).then(res => { return transformResponseData(res); }); } function transformResponseData(res: AxiosResponse): AxiosResponse { res.data = transformResponse(res.data); return res; }
OK,处理好之后我们再次运行第6篇文章中的 demo ,观察返回的响应 data 。
4. 查看结果
运行 demo 后,我们从控制台的打印信息中看到 data 已经成功转化成对象形式了。
OK,至此,我们重构的 axios 的基础功能就已经实现完毕了,后面,我们将会继续补充丰富。
(完)
查看更多关于使用Typescript重构axios(八)——实现基础功能:处理响应data的详细内容...