当前位置: 首页 > news >正文

网站域名改版网站推广服务怎么做

网站域名改版,网站推广服务怎么做,设计坞官网,asp网站 模板概述 封装的网络请求库#xff0c;主要用于处理 API 请求并支持自动处理 token 过期 和 token 刷新#xff0c;适用于需要身份验证的应用场景#xff0c;特别是在移动端中。 主要功能 自动附加 Token 在每个请求中自动附加 Authorization 头部#xff0c;使用存储的 acces…概述 封装的网络请求库主要用于处理 API 请求并支持自动处理 token 过期 和 token 刷新适用于需要身份验证的应用场景特别是在移动端中。 主要功能 自动附加 Token 在每个请求中自动附加 Authorization 头部使用存储的 accessToken。如果某个请求不需要 Token则可以通过设置 isToken: false 来排除。 Token 过期自动刷新 当请求返回提示 accessToken 过期时自动尝试使用 refreshToken 刷新 accessToken在刷新过程中新的请求会被放入一个队列中等到 refreshToken 成功后再依次重试 请求重试机制 当 accessToken 刷新成功后队列中的所有待处理请求都会自动重发如果 refreshToken 刷新失败跳转到登录页面让用户重新登录。 统一的请求和响应处理 请求的 Content-Type 和 Accept 头部统一设置统一处理服务器返回的状态码若返回 200 且不含 ErrType: -10011则正常返回数据否则进行相关的错误处理 代码概览 refreshToken 函数 用于发送请求以刷新 accessToken通过 refreshToken 获取新的 accessToken并保存在本地若成功返回新的 accessToken若失败返回错误信息。 request 函数 封装了 uni.request 请求方法提供了 GET、POST 请求支持。 检查是否有有效的 accessToken如果有自动将其附加到请求头的 Authorization 中如果请求参数中包含 params则自动将其转换为查询字符串附加到 URL 中在请求成功时判断返回数据的 ErrType 是否为 -10011表示 accessToken 过期若过期则调用 handleTokenExpiration 函数刷新 Token handleTokenExpiration 函数 处理 accessToken 过期的逻辑避免在刷新 Token 的过程中发起多次刷新请求如果当前没有刷新请求正在进行则调用 refreshToken 函数尝试刷新 Token并将待重试的请求保存在队列中如果刷新 Token 成功则重试队列中的请求重新发送如果刷新 Token 失败清空队列并跳转到登录页面 isRefreshing 和 requestQueue isRefreshing 用于确保只有一个刷新请求在进行避免并发刷新 Token 的情况requestQueue 用于存储等待 Token 刷新完成后的请求确保刷新完成后再逐一处理这些请求 工作流程 用户首次登录时后端会返回 accessToken 和 refreshToken后续的 API 请求都会自动附带 accessToken当 accessToken 过期时后端返回 ErrType: -10011触发 handleTokenExpirationhandleTokenExpiration 检查是否正在进行刷新操作如果没有则开始刷新并保存待重试的请求刷新完成后重试这些请求确保请求使用最新的 accessToken Request.js import store from /store; import config from /common/config; import { getToken, getRefreshToken, setToken } from /common/auth; import { tansParams } from /common/index;let timeout 10000; const baseUrl config.baseUrl;const refreshToken () {return new Promise((resolve, reject) {uni.request({method: post,url: ${baseUrl}/auth/refresh,data: { refreshToken: getRefreshToken() },header: { Content-Type: application/json },}).then((response) {if (response.statusCode 200 response.data.accessToken) {setToken(response.data.accessToken);resolve(response.data.accessToken);} else {reject(刷新令牌失败);}}).catch((error) {reject(error);});}); };const request (config) {const isToken (config.headers || {}).isToken false;config.header config.header || {};if (getToken() !isToken) {config.header[Authorization] Bearer getToken();}if (config.params) {let url config.url ? tansParams(config.params);url url.slice(0, -1);config.url url;}config.header[Content-Type] application/x-www-form-urlencoded; charsetUTF-8;config.header[Accept] application/json, text/javascript, */*; q0.01;return new Promise((resolve, reject) {uni.request({method: config.method || get,timeout: config.timeout || timeout,url: config.baseUrl || baseUrl config.url,data: config.data,header: config.header,dataType: json,}).then((response) {if (response.statusCode 200) {//登录过期if (response.data.ErrType -10011) {// Access Token 过期handleTokenExpiration(config, resolve, reject);} else {resolve(response.data);}} else {reject(服务器连接异常);}}).catch((error) {reject(error);});}); };let isRefreshing false; // 防止多次刷新 let requestQueue []; // 队列存储待重试的请求const handleTokenExpiration (config, resolve, reject) {if (!isRefreshing) {isRefreshing true; // 开始刷新refreshToken().then((newToken) {isRefreshing false;// 刷新成功后重试队列中的请求requestQueue.forEach((callback) callback(newToken));requestQueue []; // 清空队列// 重新发送当前请求resolve(request({...config,header: {...config.header,Authorization: Bearer newToken,},}));}).catch((error) {isRefreshing false;requestQueue []; // 清空队列// 刷新失败跳转到登录页面uni.reLaunch({url: /pages/login,});reject(登录已过期请重新登录);});} else {// 如果已经在刷新将请求加入队列requestQueue.push((newToken) {resolve(request({...config,header: {...config.header,Authorization: Bearer newToken,},}));});} };export default request;
http://www.w-s-a.com/news/149298/

相关文章:

  • 重庆网站开发培训机构电商网站创办过程
  • 企业建网站得多少钱长沙财优化公司
  • 网站开发api平台扒完网站代码之后怎么做模板
  • PHP网站建设选择哪家好动画设计师月薪多少
  • 网站如何做市场推广网站开发主要步骤
  • 浏览器正能量网站网页文章导入wordpress
  • 江西中国建设银行网站首页永久免费自助建网站
  • 创建自己网站的步骤吸引人的微信软文
  • 网站建设与网页设计论述题软件开发公司在哪里
  • 二级网站建设方案模板亚马逊网站建设案例
  • 网站开发兼职团队门户网站如何制作
  • 高州市网站建设开发区招聘信息
  • 上海专业网站制作设计公司企业邮箱怎样注册
  • 网站建设在商标第几类网站建设 设计创意
  • 做一网站APP多少钱重庆中色十二冶金建设有限公司网站
  • 网上做效果图网站有哪些软件徐州泉山区建设局网站
  • 凯里网站制作网站篡改搜索引擎js
  • 如何使用凡科建设网站武安城乡建设网站
  • 网站建设网站及上传wordpress火车头发布
  • 有没有做网站的团队电脑版传奇网站
  • 建立企业网站公司医疗创意小产品设计
  • 深圳 做网站 车公庙免费的招标网有哪些
  • 网站在那里备案成都成华区网站建设
  • 做网站选哪家好搜索引擎优化的目标体系包括哪些
  • 做数据可视化的网站ppt2016是制作网页的软件
  • 济宁市建设工程质量监督站网站徐州网站优化推广
  • 北京网站设计多少钱php做商品网站
  • 能打开的网站你了解的彩票网站开发dadi163
  • 手机做网站价格优秀企业网站建设价格
  • 电商网站建设企业做网站的客户多吗