request.js 2.66 KB
import service from './service.js'
import config from '../common/config.js'
const get = function(url, data) {
	return request(url, 'GET', data);
}
const getp = function(url, data) {
	return request(url, 'GET');
}
const post = function(url, data) {
	return request(url, 'POST', data);
}
const put = function(url, data) {
	return request(url, 'put', data);
}
const postFormData = function(url, data) {
	return request(url, 'POST', data, {
		'Content-Type': 'application/x-www-form-urlencoded'
	});
}
const postPatchJson = function(url, data) {
	return request(url, 'POST', data, {
		'Content-Type': 'application/json-patch+json'
	});
}
const del = function(url, data) {
	return request(url, 'DELETE', data);
}

const request = function(url, method, data, headers) {
	let header = {}
	if (uni.getStorageSync('token')) {
		header['Authorization'] = uni.getStorageSync('token')
			
	}
	// 如果URL已经包含完整地址,则不添加BASE_URL
	if (url.startsWith('http')) {
		// URL已经是完整的,直接使用
	} else {
		url = config.getApiBaseUrl() + url;
	}
	
	// console.error(url)
	if (headers) {
		header = Object.assign({}, header, headers)
	}
	return new Promise((resolve, reject) => { 
		uni.request({
			url,
			data, 
			method,
			header,
			timeout: 50000,
			success: (res) => {
				// console.error(url,res.data.code)
				if (res.statusCode === 200) {
					if (res.data.code == 600 || res.data.msg == '登录过期,请重新登录') {
						uni.clearStorage() 
						uni.reLaunch({
							url: '/pages/login/login'
						});
					}
					if (res.data.code < 0 && res.data.message) {
						uni.showToast({
							icon: 'none',
							title: res.data.data.message,
							duration: 2000
						});
						reject();
					} else if ( res.data.code === 500) {
						// uni.showToast({
						// 	icon: 'none',
						// 	title: res.data.msg || '操作失败,请联系管理员',
						// 	duration: 2000
						// });
					
						// uni.removeStorageSync('UserToken_KEY');
						resolve(res.data);
					} else {
						resolve(res.data);
					}
				} else if (res.statusCode === 403 || res.statusCode === 401) {
					service.addToken('');
					// uni.reLaunch({
					// 	url: '/pages/login/login'
					// });
					reject();
				} else {
					reject();
					// uni.showToast({
					// 	icon:'none',
					//     title: res.data.msg || '系统繁忙!',
					//     duration: 2000
					// });
				}

			},
			fail: (error) => {
				uni.hideLoading();
				// uni.showToast({
				// 	icon:'none',
				//     title: '网络错误!',
				//     duration: 2000
				// });
				reject();
				console.log(error);
			}
		});
	});
}

export default {
	get,
	post,
	del,
	request,
	postFormData,
	put,
	postPatchJson,
	getp
}