diff --git a/src/utils/request.js b/src/utils/request.js index 094f7fc9df1b544025ec4ce283f084ac6ee81bde..fa043e3bc1eea8aeb43442e89b4b98064c740e3e 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -1,15 +1,33 @@ import fetch from 'dva/fetch'; import { notification } from 'antd'; +const codeMessage = { + 200: '服务器成功返回请求的数据', + 201: '新建或修改数据成功。', + 202: '一个请求已经进入后台排队(异步任务)', + 204: '删除数据成功。', + 400: '发出的请求有错误,服务器没有进行新建或修改数据,的操作。', + 401: '用户没有权限(令牌、用户名、密码错误)。', + 403: '用户得到授权,但是访问是被禁止的。', + 404: '发出的请求针对的是不存在的记录,服务器没有进行操作', + 406: '请求的格式不可得。', + 410: '请求的资源被永久删除,且不会再得到的。', + 422: '当创建一个对象时,发生一个验证错误。', + 500: '服务器发生错误,请检查服务器', + 502: '网关错误', + 503: '服务不可用,服务器暂时过载或维护', + 504: '网关超时', +}; function checkStatus(response) { if (response.status >= 200 && response.status < 300) { return response; } + const errortext = codeMessage[response.status] || response.statusText; notification.error({ message: `请求错误 ${response.status}: ${response.url}`, - description: response.statusText, + description: errortext, }); - const error = new Error(response.statusText); + const error = new Error(errortext); error.response = response; throw error; } @@ -37,20 +55,10 @@ export default function request(url, options) { return fetch(url, newOptions) .then(checkStatus) - .then(response => response.json()) - .catch((error) => { - if (error.code) { - notification.error({ - message: error.name, - description: error.message, - }); + .then((response) => { + if (newOptions.method === 'DELETE' || response.status === 204) { + return response.text(); } - if ('stack' in error && 'message' in error) { - notification.error({ - message: `请求错误: ${url}`, - description: error.message, - }); - } - return error; + return response.json(); }); }