-
微信原生 wx.request 请求的方式
在接口请求的数据接收类型设置为 dataType: ‘text’
然后在 success 回调函数里添加:res.data=handleResData(res.data)
import * as $utils from '@/utils/index'
wx.request({
url: 'https://www.baidu.com/',
method: 'get',
data: {
x: '',
y: ''
},
dataType: 'text',
success (res) {
res.data = $utils.handleResData(res.data)
console.log(res.data)
}
})
utils/index.js
/**
* @description 将所有对应的长整数value,通过正则查出加上字符串的双引号标识,然后进行JSON.parse()转回json对象
* @param {*} str
* @returns
*/
export const handleResData = (str) => {
var _str = str
for (var i = true; i == true; ) {
var i = /[:][0-9]{18,}[,]?/.test(_str)
if (i == true) {
var handlestr = /[:][0-9]{18,}[,]?/.exec(_str)
var handlestr2 = /[0-9]{18,}/.exec(handlestr[0])
_str = _str.replace(handlestr[0], ':"' + handlestr2[0] + '",')
}
}
_str = _str.replace(/[,][}]/g, '}')
return JSON.parse(_str)
}
- uni-app集成axios封装接口请求的
import adapter from './_adapter.js'
import * as $utils from '@/utils/index'
// 创建axios实例
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_URL,
// 超时(毫秒)
timeout: 10000,
dataType: 'text',
// 解决后端返回Long类型的数据前端精度丢失问题
transformResponse: [
function (data) {
try {
// 转换
return $utils.handleResData(data)
} catch (err) {
// 转换失败就直接按原数据返回
return data
}
}
]
})
service.defaults.adapter = adapter
service.defaults.retry = 5 // 设置请求次数
service.defaults.retryDelay = 1000 // 重新请求时间间隔
axios适配器配置文件: _adapter.js
import settle from 'axios/lib/core/settle'
import buildURL from 'axios/lib/helpers/buildURL'
/* 格式化路径 */
const URLFormat = function (baseURL, url) {
return url.startsWith('http') ? url : baseURL
}
/* axios适配器配置 */
const adapter = function (config) {
// console.log('adapter', config)
return new Promise((resolve, reject) => {
uni.request({
method: config.method.toUpperCase(),
url: buildURL(
URLFormat(config.baseURL, config.url),
config.params,
config.paramsSerializer
),
header: config.headers,
data: config.data,
dataType: config.dataType,
responseType: config.responseType,
sslVerify: config.sslVerify,
complete: function complete(response) {
response = {
data: response.data,
status: response.statusCode,
errMsg: response.errMsg,
header: response.header,
config: config
}
settle(resolve, reject, response)
}
})
})
}
export default adapter
版权声明:本文为qq_24504591原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。