请求body数据处理
处理逻辑实现
./src/helpers/data.ts
import { isPlainObject } from './util'
export function transformRequest (data: any) : any {
if (isPlainObject(data)) {
return JSON.stringify(data)
}
return data
}
./src/helper/util.ts
export function isPlainObject (val: any): val is Object {
return toString.call(val) === '[object Object]'
}
加入处理流程
// ./src/index.ts
import { AxiosRequestConfig } from './types'
import xhr from './xhr'
import { buildURL } from './helpers/url'
import { transformRequest } from './helpers/data'
function axios(config: AxiosRequestConfig): void {
// TODO
processConfig(config)
xhr(config)
}
function processConfig(config: AxiosRequestConfig): void {
config.url = transformURL(config)
config.data = transformRequestData(config)
}
function transformURL(config: AxiosRequestConfig): string {
const { url, params } = config
return buildURL(url, params)
}
function transformRequestData(config: AxiosRequestConfig): any {
return transformRequest(config.data)
}
export default axios
测试
./example/base/app.ts
axios({
method: 'get',
url: '/base/get?foo=bar',
params: {
bar: 'baz'
}
})
// 请求body数据测试
axios({
method: 'post',
url: '/base/post',
data: {
a: 1,
b: 2
}
})
./examples/server.js
router.post('/base/post', (req, res) => {
res.json(req.body)
})
router.post('/base/buffer', (req, res) => {
let msg = []
req.on('data', chunk => {
if (chunk) {
msg.push(chunk)
}
})
req.on('end', () => {