/** * 检查HTTP请求状态 */ function checkStatus(response) { if (response.status >= 200 && response.status < 300) { return response; } const error = new Error(response.statusText); error.response = response; throw error; } /** * 将Response内容转为JSON格式 */ function parseJSON(response) { return response.json(); } /** * 统一拦截接口返回数据的状态,提示错误消息 */ function checkAPIDatas(data) { console.log('data',data) if (!data.success) { const code = data; } return data } function checkAPIError(err) { const code = err.response.code; const status = err.response.status; // const { url, type, oStatus, statusText } = err.response; // Message.error(`地址:${url} 类型:${type} 状态:${oStatus} 信息:${statusText}`, 10); return { err }; } /** * Requests a URL, returning a promise. * @param {string} url The URL we want to request * @param {object} [options] The options we want to pass to "fetch" * @return {object} An object containing either "data" or "err" */ const request = async (url, options,callBack) => { if (options) { const method = options.method.toUpperCase(); if (method === 'POST' || method === 'PATCH' || method === 'DELETE' || method === 'PUT') { options.headers = { 'Content-Type': 'application/json', 'token': await storage.load({ key: 'token' }) }; } else { options.headers = { 'token': await storage.load({ key: 'token' }) }; } } return fetch(url, options) .then(checkStatus) .then(parseJSON) .then(checkAPIDatas) .catch(checkAPIError); } export default request