68 lines
2.4 KiB
JavaScript
68 lines
2.4 KiB
JavaScript
// 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
|
||
}
|