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