2025-04-19 15:38:48 +08:00

68 lines
2.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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
}