首页 > 其他分享 >umi-Request请求封装

umi-Request请求封装

时间:2023-09-22 14:36:32浏览次数:43  
标签:封装 请求 Request request data headers const umi response

/**  * request 网络请求工具  * 更详细的 api 文档: https://github.com/umijs/umi-request  */ import { extend } from 'umi-request'; import { notification, message } from 'antd'; import { getToken } from './utils';
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; };
/**  * 配置request请求时的默认参数  */ const request = extend({   errorHandler, // 默认错误处理   credentials: 'include', // 默认请求是否带上cookie });
// request拦截器, 改变url 或 options. request.interceptors.request.use(async (url, options) => {   let token = getToken();   const headers = {     Authorization: token,     token: token   };   Object.assign(headers, options.headers);   return {     url: url,     options: { ...options, headers: headers },   }; });
// 拦截器, 判断result的code, 是4001则为登录信息已过期, 跳转到登录页 request.interceptors.response.use(async (response) => {   // 登录要验证是否被篡改,这里获取到header信息,返回到data里,方便后续处理   const resSignCode = response.headers.get("ressigncode");
  const data = await response.clone().json();
  if (resSignCode) {     data.resSignCode = resSignCode;   }   console.log(data);   if ((data && (data.code == "401")) || (data && data.resultCode == "140") || (data && data.code == 500)) {     //   message.destroy()     message.error('登录信息已过期,请重新登录!');     localStorage.clear();   }
  return data;   // return response; })
export default request;

标签:封装,请求,Request,request,data,headers,const,umi,response
From: https://www.cnblogs.com/yuan947022015/p/17722272.html

相关文章

  • FastAPI Request中存储信息
    在请求前拦截,检测token使用Request.state.XXX存信息fromfastapiimportRequest,FastAPIfrompy_jwt.use_jwtimportdecode_tokende......
  • 关于文件下载的封装
    importaxiosfrom'axios'constisIE=()=>navigator.userAgent.toLowerCase().indexOf('trident')>-1; //判断是否为IE浏览器//文件下载exportasyncfunctiondownLoad(params){  //returnrequest('/ability/api/rs/gw/file/'......
  • umi4注册dva并且使用antd
    搭建Umi4框架项目react语法有simpleapp和antdesignpro  后者属于umimax无需下载@umijs/plugins直接在umirc.ts中注册 前者npm install @umijs/plugins 并在.umirc.ts中完成注册,antd不需要注册,npminstallantd即可  在src下新建modles文件或者在每一个......
  • python+playwright 学习-81 page.expect_request()捕获网络请求
    前言page.expect_request()可以捕获网页上发出去的请求,当有多个请求时,可以根据请求url,请求方式判断。expect_request官方文档示例withpage.expect_request("http://example.com/resource")asfirst:page.get_by_text("triggerrequest").click()first_request=firs......
  • 如何用laravel框架封装微信支付和支付宝支付?
    在Laravel框架中封装微信支付和支付宝支付通常需要使用相应的扩展包(Packages),这些扩展包可以帮助您与微信支付和支付宝支付的API进行交互,简化了整个支付集成过程。以下是在Laravel中封装微信支付和支付宝支付的一般步骤:封装微信支付:安装扩展包:首先,您需要在Laravel项目中安装适用于微......
  • Jdbc封装工具
    packagejdbcutils;importjava.io.FileReader;importjava.io.IOException;importjava.net.URL;importjava.sql.*;importjava.util.Properties;//释放资源publicclassJdbcUtils{privatestaticStringurl;privatestaticStringuser;privatesta......
  • HttpClient HttpClientHandler WebRequestHandler Explained 处理https请求
    Framework4.8的HttpClientHandler有ServerCertificateCustomValidationCallback所以处理https请求做如下操作:varhandler=newHttpClientHandler();varbaseUri=newUri(url);if(baseUri.Scheme.ToLower()=="https"){......
  • NET6/Framework 封装邮件发送纯文本/HTML/HTML+图片/附件
    NugetRuntime:Net6MailKit4.2.0MimeKit4.2.0发送纯文本{varbodyBuilder=newBodyBuilder();bodyBuilder.TextBody="这是一封纯文本邮件";message.Body=bodyBuilder.ToMessageBody();}{vartextPart=newTextPart("plain")......
  • SpringMVC关于@RequestBody加与不加的区别
    SpringMVC关于@RequestBody加与不加的区别前两天在做项目的时候遇到了这样一个问题,小组成员为了方便做接口测试,给Controller控制器上加了@RequestBody注解,但是前端请求接口时报错:org.springframework.web.HttpMediaTypeNotSupportedException:Contenttype'application/x-www-......
  • js,格式化long类型日期封装
    /***扩展date函数*author:c3gen*/Date.prototype.format=function(format){varo={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":......