# 处理请求 body 数据
# 需求分析
我们通过执行 XMLHttpRequest 对象实例的 send 方法来发送请求,并通过该方法的参数设置请求 body 数据,我们可以去 mdn 查阅该方法支持的参数类型。
我们发现 send 方法的参数支持 Document 和 BodyInit 类型,BodyInit 包括了 Blob, BufferSource, FormData, URLSearchParams, ReadableStream、USVString,当没有数据的时候,我们还可以传入 null。
但是我们最常用的场景还是传一个普通对象给服务端,例如:
axios({
method: 'post',
url: '/base/post',
data: {
a: 1,
b: 2
}
})
@前端进阶之旅: 代码已经复制到剪贴板
这个时候 data是不能直接传给 send 函数的,我们需要把它转换成 JSON 字符串。
# transformRequest 函数实现
根据需求分析,我们要实现一个工具函数,对 request 中的 data 做一层转换。我们在 helpers 目录新建 data.ts 文件。
helpers/data.ts:
import { isPlainObject } from './util'
export function transformRequest (data: any): any {
if (isPlainObject(data)) {
return JSON.stringify(data)
}
return data
}
@前端进阶之旅: 代码已经复制到剪贴板
helpers/util.js:
