# 转换请求/响应数据

本章节,我们将会实现转换请求/响应数据功能

# 代码

我们先来看一下代码的实现

transformData函数代码在wx-axios/lib/core/transformData.js

import { forEach } from "../utils";

function transformData(data, headers, method, fns) {
  forEach(fns, (fn) => {
    data = fn(data, headers, method);
  });
  return data;
}

export default transformData;

transformRequest函数代码在wx-axios/lib/defaults.js

const defaults = {
  transformRequest: [
    (data, headers, method) => {
      return data;
    },
  ],
};

transformResponse函数代码在wx-axios/lib/defaults.js

const defaults = {
  transformResponse: [
    (data, headers, method) => {
      return data;
    },
  ],
};

# 分析

transformDatatransformRequesttransformResponse函数跟axios不一样的是,多了一个method参数,这个是因为我们是根据不同的请求方法去调用不同的底层 API,所需要的实现的数据转换功能可能会有所不同,所以添加了一个method参数

由于wx.requestwx.downloadFilewx.uploadFile这三个 API 已经经过微信小程序的封装,对请求/响应数据不需要做任何处理,所以transformRequesttransformResponse默认的做法是直接原样返回了数据,不做处理。

# 总结

转换请求/响应数据这个功能跟axios是保持一致的,但是由于微信小程序内部已经是经过封装的,所以在转换数据的时候无需做任何处理,相比于 web 端和 node 端的转化就要简单很多了

本章节一些相关的东西可查看axios源码分析的转换请求/响应数据章节