Created
September 29, 2017 09:48
-
-
Save jintangWang/5b14561ab236e8a6af4a57b3fc8cee09 to your computer and use it in GitHub Desktop.
封装的fetch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const defaultUrl = 'https://cnodejs.org/api/v1'; | |
const header = new Headers({ | |
'Accept': 'application/json', | |
'Content-Type': 'application/json' | |
}); | |
const defaultConfig = { | |
method: 'GET', | |
headers: header, | |
mode: 'cors', | |
credentials: "same-origin", // 设置fetch自动地发送本地的Cookie | |
cache: 'no-cache', | |
redirect: 'follow' | |
}; | |
let checkStatus = (response) => { | |
if (response.ok) { | |
return response.json(); | |
} else { | |
let error = new Error(response.statusText) | |
error.response = response | |
throw error | |
} | |
}; | |
let $fetch = (url, config) => { | |
let finalUrl = defaultUrl + url; | |
let request = config ? new Request(finalUrl, Object.assign({}, defaultConfig, config)) : finalUrl; | |
const fetchDefer = new Promise((resolve, reject) => { | |
fetch(request).then(checkStatus).then(data => { | |
if (data) { | |
resolve(data) //返回成功数据 | |
} else { | |
reject(data) //返回失败数据 | |
} | |
}).catch(error => { //捕获异常 | |
alert(error.response.status + error.response.statusText) | |
}) | |
}); | |
return fetchDefer | |
}; | |
export default $fetch; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment