uni.request网络请求的封装

855 阅读1分钟
const BASEURL = 'https://www.baidu.com/' // 请求地址
// 请求拦截器
uni.addInterceptor('request', {
	invoke(args) {
		// 发送请求前
	},
	success(args) {
		// 请求成功响应后
	}, 
	fail(err) {
		// 请求失败
		console.log('interceptor-fail',err)
	}, 
	complete(res) {
		// 完成请求后
	}
})
// 创建请求服务
function createSerive (config) {
	let reuest = new Promise((resolve, reject) => {
		uni.request({
			url: BASEURL  + config.url,
			header: config.header,
			method: config.method,
			data: JSON.stringify(config.data) !== "{}" ?  config.data : config.params,
			timeout: config.timeout,
			dataType: config.dataType,
			responseType: config.responseType,
			success:(res) => {
				if(res.data.code === 200) {
					resolve(res.data.data)
				} else {
					// 其他情况的错误提示
					uni.showToast({
						title: res.data.msg,
						icon: 'none',
						duration: 2000
					});
					reject(res)
				}
			},
			fail: () => {
				reject()
			},
			complete: () => {
			}
		})
	})
	return reuest
}
// 请求方法
function request (option) {
	const optionDefault = {
	  header: {
		  'cookie': uni.getStorageSync('cookie'), // 请求头中添加 cookie
		  'X-Requested-With': 'XMLHttpRequest'	// 设置为异步的ajax请求
	  },
	  timeout: option.timeout ? option.timeout : 35000, // 请求接口超时设置
	  dataType:  option.dataType ? option.dataType : 'json', // 对返回的数据做一次 JSON.parse
	  responseType: option.responseType ? option.responseType : 'text', // 设置响应的数据类型。合法值:text、arraybuffer
	  data: {}
	}
	return createSerive(Object.assign(optionDefault, option))
}
export default request