umi-request的具体使用案例
放上参考文档: https://github.com/umijs/umi-request
request.ts文件
import { extend } from umi-request; import { notification, message } from antd; import _omit from lodash/omit; const codeMessage = { 200: 服务器成功返回请求的数据。, 201: 新建或修改数据成功。, 202: 一个请求已经进入后台排队(异步任务)。, 204: 删除数据成功。, 400: 发出的请求有错误,服务器没有进行新建或修改数据的操作。, 401: 用户没有权限(令牌、用户名、密码错误)。, 403: 用户得到授权,但是访问是被禁止的。, 404: 发出的请求针对的是不存在的记录,服务器没有进行操作。, 406: 请求的格式不可得。, 410: 请求的资源被永久删除,且不会再得到的。, 422: 当创建一个对象时,发生一个验证错误。, 500: 服务器发生错误,请检查服务器。, 502: 网关错误。, 503: 服务不可用,服务器暂时过载或维护。, 504: 网关超时。, }; /** * 异常处理程序 */ const errorHandler = (error: { response: Response }): Response => { const { response } = error; if (response && response.status) { const errorText = codeMessage[response.status] || response.statusText; const { status, url } = response; notification.error({ message: `请求错误 ${status}: ${url}`, description: errorText, }); } else if (!response) { notification.error({ description: 您的网络发生异常,无法连接服务器, message: 网络异常, }); } return response; }; const authorization = (noAuth?: boolean) => { const AuthorizationToken = ‘请求头携带的Token’ return AuthorizationToken; }; /** * @param noAuth * 是否带token请求 * * @param credential * 默认请求是否带上cookie * include 携带 * omit 不携带 */ const HttpRequest = (option?:any, noAuth?: boolean, credential?: include | omit) => { let newOption = {...option} if(newOption.method === post || newOption.method === delete || newOption.method === put) { // params --> 会被放到body的请求参数,POST/PUT/DELETE 方法 newOption.data = newOption.body }else { // params --> 会被拼接到url上的的请求参数,GET方法 newOption.params = newOption.body } if(newOption.body) { // 为了保证调用的一致性,外部都通过自定义的body传递参数,但body是关键字需要手动清除 newOption = _omit(newOption, body) } const request = extend({ errorHandler, // 默认错误处理 timeout: 15000, credentials: credential || omit, ...newOption, headers: { Accept: application/json, Content-Type: application/json; charset=utf-8, Authorization: authorization(noAuth), } }) // 添加拦截器统一处理返回response request.interceptors.response.use(async response => { const data = await response.clone().json() if(data.status !== 200 && data.message){ message.error(data.message) } return response; }); return request }; export default HttpRequest;
定义接口 api.ts文件
// 引入request.js文件 import HttpRequest from ./request; export default { async putFunction(params: any): Promise<any> { return HttpRequest({ method: put, // 如果是get方法可省 body: params, // 所有方法传参都通过body,没有省略即可 })(`请求URL`); }, }
使用
import { putFunction } from api try { const res = yield putFunction(params); } catch (error) { console.log(error); }
上一篇:
IDEA上Java项目控制台中文乱码