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

好的免费网站建站平台项目建设管理 公司 网站

好的免费网站建站平台,项目建设管理 公司 网站,工程建设网最新信息网站,注册网站平台要多少钱目录 1. 基本知识2. Demo3. 拓展 1. 基本知识 从实战代码中学习#xff0c;上述实战代码来源#xff1a;芋道源码/yudao-mall-uniapp 该代码中#xff0c;通过自定义 request 函数对 HTTP 请求进行了统一管理#xff0c;并且结合了 Token 认证机制 请求封装原理#xff… 目录 1. 基本知识2. Demo3. 拓展 1. 基本知识 从实战代码中学习上述实战代码来源芋道源码/yudao-mall-uniapp 该代码中通过自定义 request 函数对 HTTP 请求进行了统一管理并且结合了 Token 认证机制 请求封装原理request 函数是对 uni.request 的一个封装 动态设置请求头根据 config 的配置决定是否需要在请求头中附加 AuthorizationBearer Token。Token 是从本地存储中获取的根据环境区分不同的 Base URL根据当前的开发环境development 或 production动态设置请求的基础 URLbaseUrl统一处理请求参数config.params 会被转化成查询字符串拼接到请求的 URL 后面Promise 封装异步操作请求通过 uni.request 发出并将返回的 response 数据封装为一个 Promise使得调用 request 的地方可以使用 then 或 catch 来处理结果 Token 认证管理原理 Token 存储uni.setStorageSync 和 uni.getStorageSync 被用来在客户端本地存储 ACCESS_TOKEN 和 REFRESH_TOKEN这两个 Token 被用于身份验证获取 Token在每次 HTTP 请求时首先会检查请求是否需要 Token通过 config.headers.isToken 判断。如果需要就从本地存储中获取 AccessToken 并加入到请求头中Token 过期处理当请求返回的状态码为 401 时表示 Token 已过期此时会弹出提示框让用户重新登录并清除旧的 Token 错误处理机制 网络错误封装了常见的网络错误如超时、服务器错误等并提供了友好的提示接口返回错误统一处理接口返回的错误错误信息根据 res.data.code 的值来决定如果返回的是 500 错误或其他非 200 的错误则通过 toast 提示给用户401 错误处理当返回状态码为 401 时表示 Token 过期或无效代码会自动处理登出流程 2. Demo 根据实战中的Demo给出一版通用的Demo 封装request的时候需要与token结合 // utils/request.js import { getAccessToken, setToken, removeToken } from /utils/auth; import config from /config; import errorCode from /utils/errorCode; import { toast, showConfirm } from /utils/common;let timeout 10000; let baseUrl process.env.NODE_ENV development ? config.devbaseUrl : config.prodbaseUrl;const request config {const isToken (config.headers || {}).isToken false;config.header config.header || {};if (getAccessToken() !isToken) {config.header[Authorization] Bearer getAccessToken();}config.header[tenant-id] 1; // 强制设置租户 IDif (config.params) {let url config.url ? tansParams(config.params);url url.slice(0, -1);config.url url;}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 {let [error, res] response;if (error) {toast(后端接口连接异常);reject(后端接口连接异常);return;}const code res.data.code || 200;const msg errorCode[code] || res.data.msg || errorCode[default];if (code 401) {showConfirm(登录状态已过期您可以继续留在该页面或者重新登录?).then(res {if (res.confirm) {removeToken();uni.reLaunch({ url: /pages/login });}});reject(无效的会话或者会话已过期请重新登录。);} else if (code 500) {toast(msg);reject(500);} else if (code ! 200) {toast(msg);reject(code);}resolve(res.data);}).catch(error {let { message } error;if (message Network Error) message 后端接口连接异常;else if (message.includes(timeout)) message 系统接口请求超时;else if (message.includes(Request failed with status code)) message 系统接口 message.substr(message.length - 3) 异常;toast(message);reject(error);});}); };export default request;对应的token文件 // utils/auth.js const AccessTokenKey ACCESS_TOKEN; const RefreshTokenKey REFRESH_TOKEN;export function getAccessToken() {return uni.getStorageSync(AccessTokenKey); }export function getRefreshToken() {return uni.getStorageSync(RefreshTokenKey); }export function setToken(token) {uni.setStorageSync(AccessTokenKey, token.accessToken);uni.setStorageSync(RefreshTokenKey, token.refreshToken); }export function removeToken() {uni.removeStorageSync(AccessTokenKey);uni.removeStorageSync(RefreshTokenKey); }相关接口请求 // 在页面中调用封装的请求方法 import request from /utils/request;export default {methods: {fetchData() {request({url: /api/getData,method: GET,params: { id: 123 }}).then(response {console.log(数据:, response);}).catch(error {console.log(请求失败:, error);});}} }3. 拓展 process.env.NODE_ENV 是 Node.js 环境中用于获取当前应用运行环境的一个变量 在大多数前端框架如 Vue、React以及后端框架如 Express中process.env.NODE_ENV 被广泛用于区分不同的开发环境 前端vue中可能已经标明了 在开发模式下NODE_ENVdevelopment npm run dev 在生产模式下NODE_ENVproduction npm run build 在 npm 脚本中可以通过 cross-env 等工具来跨平台设置环境变量 scripts: {dev: cross-env NODE_ENVdevelopment vue-cli-service serve,build: cross-env NODE_ENVproduction vue-cli-service build }另外一个接口超时时间全局默认是20秒如果时长不对可以在单独某个接口设置 // 上传图片 uploadImage(data) {return upload({url: /infra/file/upload,method: upload,filePath: data.filePath,timeout: 30000 // 设置超时时间为30秒}); }
http://www.hkea.cn/news/14322717/

相关文章:

  • 软件开发的步骤流程好的seo公司营销网
  • 织梦网站模板安装信息行业网站建设
  • 新网站做seo深圳石岩做网站的公司
  • 西安东郊网站建设厦门企业网站seo
  • 没网站做cpa星沙做淘宝店铺网站
  • 网站品牌词如何优化如何购买域名和备案
  • 网销可以做推广的网站杭州seo网络推广
  • 网站设计任务海外网三农频道
  • 家庭农场网站建设国内免费空间申请
  • 兰州网络优化智谋网站优化公司
  • 免费网站入口网站免费进网站建设合同服务事项
  • 做产品表情的网站wordpress添加悬浮小人
  • 网站上的淘客组件是怎样做的hestia wordpress
  • 做网站编码如何做采集网站
  • 青岛网站设计微动力12333社保查询网官网
  • 网站规划建设与管理维护教程wordpress首页轮换图片在哪里设置
  • 建手机网站的软件有哪些编程基础知识入门
  • 那个网站专门做婚纱相册软件制作过程
  • 佛山营销型网站建设公司asp.net 网站开发项目化教程
  • php实现网站tag标签wordpress 全屏电影
  • 网站开发前后端技术企业网站的建立联系方式
  • 石家庄医疗网站建设哪个网站能接施工图来做
  • 江苏中益建设官方网站wordpress 中间截取缩略图
  • 深圳品牌网站制作多少钱wordpress为什么那么卡
  • 新公司注册网站中国糕点网页设计网站
  • 中国移动网站备案管理系统不能用网站建设相关书籍
  • 食品网站架构正规网站建设空间哪个好
  • 电子商务网站建设培训小结wordpress好用的主题
  • 网站宣传页1688seo优化是什么
  • 网站标题修改wordpress调用最新文章插件