fetch.js 1.0 KB
Newer Older
M
udpata  
maguohua 已提交
1
import {baseUrl} from './env'
M
udpata  
maguohua 已提交
2

M
udpata  
maguohua 已提交
3
export default (type = 'GET', url = '', data = {}) => {
M
updata  
maguohua 已提交
4
	return new Promise((resolve, reject) => { //返回一个promise
M
udpata  
maguohua 已提交
5
		type = type.toUpperCase();
M
udpata  
maguohua 已提交
6 7
		url = baseUrl + url
		let requestObj = {
M
udpata  
maguohua 已提交
8 9 10 11 12 13
		  	method: type,
		  	headers: {
		      	'Accept': 'application/json',
      			'Content-Type': 'application/json'
		  	},
		  	mode: "no-cors",
M
udpata  
maguohua 已提交
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
		}

		if (type == 'GET') {
			let dataStr = ''; //数据拼接字符串
			Object.keys(data).forEach(key => {
				dataStr += key + '=' + data[key] + '&';
			})

			if (dataStr !== '') {
				dataStr = dataStr.substr(0, dataStr.lastIndexOf('&'));
				url = url + '?' + dataStr;
			}
		}else if (type == 'POST') {
			Object.defineProperty(requestObj, 'body', {
				value: JSON.stringify(data)
			})
		}else {
			reject('error type')
		}
		
		fetch(url, requestObj).then(res => {
M
updata  
maguohua 已提交
35
		  	if (res.status == 200) {
M
udpata  
maguohua 已提交
36 37 38 39 40 41 42 43 44 45 46
		      	return res.json()
		  	} else {
		      	return reject(res)
		  	}
		}).then(data => {
		  	resolve(data);
		}).catch(err => {
		  	reject(err);
		});
	})
}