Appearance
transformData
函数在dispatchRequest
中被调用,用于对请求数据和响应数据进行转换。这个函数比较短,但是涉及到了请求数据和响应数据的转换,也比较重要。
transformData
函数主要是对请求数据和响应数据进行转换。在Axios库中,它可以通过transformRequest
和transformResponse
两个配置项来实现请求和响应数据的转换。这两个配置项可以是一个函数或者是一个函数数组,其中每个函数都会被依次调用。
transformData
函数接收三个参数,分别是data
、headers
和fns
。其中data
是请求数据或者响应数据,headers
是请求或响应的头部信息,fns
是一个函数数组,每个函数都用于对数据进行转换。transformData
函数首先遍历fns
数组中的每个函数,依次对数据进行转换,最终返回转换后的数据。
这里有一个小技巧,即利用数组的reduce
方法来实现遍历和调用函数数组的过程,如下所示:
js
return fns.reduce(function (data, fn) {
return fn(data, headers);
}, data);
该代码段中,reduce
方法依次调用fns
数组中的每个函数,传入的data
参数表示上一个函数返回的结果,fn
表示当前要执行的函数,然后返回函数执行的结果,最终得到转换后的数据。
需要注意的是,在请求数据和响应数据的转换过程中,transformRequest
和transformResponse
两个配置项都会被调用,它们的函数数组会被传入到transformData
函数中的fns
参数中。