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

根据颜色找网站wordpress加载插件

根据颜色找网站,wordpress加载插件,直播软件大全,软件开发网前言#xff1a; 1、为什么不适用uniapp自带的请求功能#xff1f; 答#xff1a;uniapp自带的请求功能#xff0c;再刷新了令牌后#xff0c;重新请求返回的数据无法返回给发起请求的方法。也就是说#xff0c;刷新令牌后重新发起的请求和第一次发起请求的方法是割裂的。…前言 1、为什么不适用uniapp自带的请求功能 答uniapp自带的请求功能再刷新了令牌后重新请求返回的数据无法返回给发起请求的方法。也就是说刷新令牌后重新发起的请求和第一次发起请求的方法是割裂的。 2、封装文件中我设置了无感刷新令牌功能。我后台的判断逻辑是当前端请求的令牌过期时间和当前时间比小于10分钟时刷新令牌。   一、安装axios 1.1、使用HBuilder打开uniapp项目点击视图-显示终端打开npm操作页面。 1.2、如果项目中还没有“package.json”文件请先初始化项目。 npm init -y1.3、安装axios建议锁定低版本使用uniapp-vue3版本时axios的版本需要0.26.0以下。 npm i axios0.26.01.4 在main.js中配置axios import axios from axios//引入axios import * as request from /common/api/request.js//自定义请求封装文件 Vue.prototype.$http request //封装的请求方法// 解决uniapp 适配axios请求避免报adapter is not a function错误 // 此配置也可以放在自定义请求封装文件中例如 request.js axios.defaults.adapter config {return new Promise((resolve, reject) {let settle require(axios/lib/core/settle);let buildURL require(axios/lib/helpers/buildURL);uni.request({method: config.method.toUpperCase(),url: config.baseURL buildURL(config.url, config.params, config.paramsSerializer),header: config.headers,data: config.data,dataType: config.dataType,responseType: config.responseType,sslVerify: config.sslVerify,complete: function complete(response) {response {data: response.data,status: response.statusCode,errMsg: response.errMsg,header: response.header,config: config};settle(resolve, reject, response);}})}) }二、自定义请求封装文件 request.js我的文件路径是 /根目录/common/api/request.js。 import axios from axios // 引入axios import store from /store/index.js//引入store仓库function getToken() { //获取令牌let token store.state.accountValue.accessToken //store仓库中的令牌if (!token) { //令牌不存在显示登录弹窗openLoginDialog()}return token }//令牌过期刷新令牌请求 function refreshToken() {return service.get(/account/user/refresh/login).then(res res) }//设置store及微信缓存中的账号信息 function setAccountInfo(accountInfo) {store.commit(accountValue/SET_ACCOUNT_INFO, accountInfo) //修改store中的账号信息//存储账号信息到微信缓存中wx.setStorage({key: userInfo,data: JSON.stringify(accountInfo)}) }axios.defaults.headers[Content-Type] application/json;charsetutf-8 // 创建axios实例 const baseUrl store.state.constantValue.hostUrl store.state.constantValue.port //域名/地址公共前缀 const appid store.state.constantValue.appid //小程序的appid const requestTimeout store.state.constantValue.requestTimeout //默认的请求超时时间单位毫秒 const service axios.create({baseURL: baseUrl, //axios的默认请求地址前缀timeout: requestTimeout //默认的请求超时时间单位毫秒 })let requests [] // 重试队列数组把需要刷新令牌的请求都放入这个数组中每一项将是一个待执行的函数形式let common {//默认的请求配置信息data: {},header: {Content-Type: application/json,Content-Type: application/x-www-form-urlencoded},method: GET,dataType: json }// 请求拦截器 service.interceptors.request.use(config {// 每次发送请求之前判断vuex中是否存在token// 如果存在则统一在http请求的headers都加上token这样后台根据token判断你的登录情况// 即使本地存在token也有可能token是过期的所以在响应拦截器中要对返回状态进行判断config.method config.method || common.method;if (config.method ! GET) {config.data config.data || common.data;}config.dataType config.dataType || common.dataType;config.header config.header || common.header;if (config.header.NeedToken NEED) { //如果需要访问令牌const token getToken();!isNull(token) (config.headers.Authorization Bearer token);}return config;},error {return Promise.error(error);});// 响应拦截器 service.interceptors.response.use(response {// 如果返回的状态码为200说明接口请求成功可以正常拿到数据// 否则的话抛出错误if (response.status 200) {let code response.data.code //code为自定义的后台响应codeif (code 20009 || code 20010) { //未登录或者登录异常需要重新登录时openLoginDialog()//打开登录弹窗return Promise.resolve(response.data); //返回响应结果} else {if (code 20017) { //后台要求刷新令牌const config response.configif (!store.state.constantValue.isRefreshing) { //如果正在刷新令牌状态为false//设置正在刷新令牌状态为true进入更新令牌阶段store.commit(constantValue/SET_IS_REFRESHING, true)//获取刷新令牌请求return refreshToken().then(res {if (res.code 20000) {// 刷新令牌成功设置store及微信缓存中的账号信息const accountInfo res.datasetAccountInfo(accountInfo)//已经刷新了令牌重新发起重试队列数组中的请求requests.forEach(cb cb(accountInfo.accessToken))// 完成后清空这个数组requests []//重置当前请求的配置重新发起请求config.headers.Authorization Bearer accountInfo.accessTokenconfig.baseURL baseUrl //axios的默认请求地址前缀config.timeout requestTimeout //默认的请求超时时间return service(config) //重新发起请求返回的就是当前请求} else {openLoginDialog()//打开登录弹窗}}).catch(rej { //令牌刷新发生错误openLoginDialog()//打开登录弹窗}).finally(() {//完成之后设置正在刷新令牌状态为falsestore.commit(constantValue/SET_IS_REFRESHING, false)})} else { //如果正在刷新令牌状态为trueif (config.header.NeedToken NEED) { //请求需要令牌// 返回一个未执行resolve的promisereturn new Promise((resolve) {// 将resolve放进重试队列数组用一个函数形式来保存等令牌刷新后直接执行requests.push((token) {config.headers.Authorization Bearer tokenresolve(service(config))})})}}}return Promise.resolve(response.data) //返回响应信息}} else { //状态码不为200时return Promise.reject(response.data) //返回响应异常信息}},error {return Promise.reject(error) //返回响应错误信息} );export default service;
http://www.pierceye.com/news/69852/

相关文章:

  • 南京医疗网站建设公众号版影视网站开发
  • 织梦做网站简单吗gta5购买房产网站正在建设
  • 成都网站建设价格表企业网站建设的目的和意义
  • 郑州制作网站phpcms 后台修改修改网站备案号
  • 如何建立分销网站深圳网站建设九曲网
  • 网站尺寸自适应编程猫官方网站入口
  • ASP做旅游网站代码丰县网站建设
  • 免费建微网站北京高端网站制作公司
  • 什么专业是做网站网站建设工作室有几个部门
  • 报告基因天津关键词优化平台
  • 宜昌做网站公司有哪些网站百度快照和做网站有关系吗
  • 扁平风格网站模板县城做网站的多么
  • 推广网络网站东莞vi设计
  • 14年网站开发经验软件开发合同模板范本
  • 在百度网站备案查询上显示未备案是什么意思网站建设与发布
  • 网站开发用什么浏览器合肥网站推广公司排名
  • 什么是网络营销产生的观念原因西安网站优化排名推广
  • 网站留白自己做网站需要买哪些
  • 辽宁品牌建设促进会 网站猎头公司怎么样
  • 二级域名 电子商务网站推广方案域名备案做电影网站
  • 成都网站建设科技公wordpress windows
  • 沈阳网站备案住房和城乡建设部网站防烟排烟
  • 杭州公司建网站网站设计公司深圳
  • 我有域名和服务器找人建设网站简单描述什么是网络营销
  • openshift 做网站手机登录百度pc端入口
  • 做暧暧免费网站阿里网站域名指向怎么做
  • 建设企业网站个人网银微型营销网站制作
  • 微信推送在哪个网站做设计人才网官网
  • 石柱土家族网站建设做网站优化有什么途径
  • 怎样做txt电子书下载网站营业推广方式