68 lines
2.4 KiB
JavaScript
Raw Normal View History

2025-04-19 15:38:48 +08:00
// var utils = require("axios/lib/utils");
var settle = require('axios/lib/core/settle')
// var cookies = require("axios/lib/helpers/cookies");
var buildURL = require('axios/lib/helpers/buildURL')
var buildFullPath = require('axios/lib/core/buildFullPath')
// var parseHeaders = require("axios/lib/helpers/parseHeaders");
// var isURLSameOrigin = require("axios/lib/helpers/isURLSameOrigin");
// var createError = require("axios/lib/core/createError");
const isUploadFile = require('./isUploadFile')
module.exports = function format(config, resolve, reject) {
const fullPath = buildFullPath(config.baseURL, config.url)
const requestHeaders = config.headers
const uniConfig = {
...config,
url: buildURL(fullPath, config.params, config.paramsSerializer),
// uniapp 用的是 header
header: requestHeaders,
}
if (isUploadFile(config)) {
delete requestHeaders['Content-Type'] // Let the browser set it
if (config.formData) {
uniConfig.formData = config.formData
} else {
// application/json 且 data isObject 时, 发送前会对 config.data 进行 JSON.stringify 处理
// uniapp 内部会处理,即需要的就是 object 所以需要提前 parse
if (typeof config.data === 'string') {
// 如果config.data 数据格式不合适,还是选择报错
uniConfig.formData = JSON.parse(config.data)
} else {
uniConfig.formData = config.data
}
}
} else if (config.method === 'get') {
// 兼容 get 时的 params 字段
uniConfig.data = config.data ? config.data : config.params
} else {
uniConfig.data = config.data
}
// HTTP basic authentication
if (config.auth) {
var username = config.auth.username || ''
var password = unescape(encodeURIComponent(config.auth.password)) || ''
requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password)
}
uniConfig.complete = function (response) {
// 暂时不明白为什么要判断 responseType === 'text',也许返回结果是有多种格式的,但是目前没碰到。
// var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
var result = {
data: response.data,
status: response.statusCode,
statusText: response.errMsg,
header: response.header,
config: config,
// request: request
}
settle(resolve, reject, result)
}
return uniConfig
}