Appearance
dispatchRequest
方法是Axios库中发送请求的核心函数。该函数主要完成以下功能:
- 初始化请求参数:将请求参数进行格式化,并调用
transformRequest
函数对请求参数进行转换。 - 发送请求:通过XMLHttpRequest对象或者fetch API发送请求,并返回一个Promise对象。
- 处理响应:如果请求成功,将响应数据进行格式化,并调用
transformResponse
函数对响应数据进行转换,最后返回转换后的响应数据。如果请求失败,将返回一个带有错误信息的rejected状态的Promise对象。
下面是dispatchRequest
方法的详细代码注释:
js
function dispatchRequest(config) {
// 初始化请求参数,包括URL、headers、请求体等
throwIfCancellationRequested(config);
processConfig(config);
// 支持请求拦截器,通过Promise链式调用请求拦截器
return transformData(config)
.then(function (data) {
// 使用config.baseURL和config.url合并出完整的请求地址
config.data = data;
var adapter = config.adapter || defaults.adapter;
// 使用适配器发送请求,返回一个Promise对象
return adapter(config);
})
.then(function (response) {
// 支持响应拦截器,通过Promise链式调用响应拦截器
throwIfCancellationRequested(config);
// 格式化响应数据
response.data = transformData(
response.data,
response.headers,
config.transformResponse
);
// 返回转换后的响应数据
return response;
})
.catch(function (e) {
// 如果请求被取消,则抛出一个Cancellation异常
if (isCancel(e)) {
throw e;
}
// 格式化请求错误信息
throw transformError(e, config, null, null, null);
});
}
可以看到,dispatchRequest
方法涉及的功能较为复杂,涉及到了请求参数的初始化、发送请求、响应处理等多个方面,是Axios库中最核心的一个方法。