微信小程序(四十九)拦截器处理登入失败情况

注释很详细,直接上代码

上一篇

新增内容:
1.拦截器判断处理失败与成功的情况
2.使用拦截器拒绝失败的情况,使网络请求后面的逻辑步骤不会执行

源码:

index.wxml

xml 复制代码
<button type="primary" bind:tap="onSubmit">登入</button>

index.js

js 复制代码
Page({
  data:{
    mobile:'14444444444',
    code:'123456'//随便填的错误的验证码(成功的情况在之前的文章中演示了,这里主要演示错误的情况)
    //如果需要尝试正确的验证码在浏览器输入`https://live-api.itheima.net/code?mobile=14444444444`即可获取正确的验证码
  },
   //验证验证码
   async onSubmit(){
    const mobile=this.data.mobile
    const code=this.data.code

    //上传手机号和验证码进行验证
    const res= await wx.http.post('/login',{mobile,code})
    console.log(res)
    //因为已经使用了拦截器判断成功与失败的情况所以无需再判断
    const app=getApp()

    //调用全局函数setToken
    //参数1为传递的变量的名字
    //参数2为变量的值
    app.setToken('token',this.data.initToken)

    app.setToken('refreshToken',this.data.initRefreshToken)
    
    //这里打印全局变量看一下
    console.log('token:'+app.token)
    console.log('refreshToken:'+app.refreshToken)
  }
})

utils/http.js

js 复制代码
import http from "wechat-http"


//设置全局默认请求地址
http.baseURL = "https://live-api.itheima.net"

//设置响应拦截器
http.intercept.response=(res)=>{
    if(res.data.code===10000){
      //成功的情况
      return res.data
    }
    else{
      //其他情况
      wx.showToast({//弹窗提醒
        title: res.data.message||'业务错误',
        icon:'none'
      })

        //主动返回失败的 Promise ,不执行业务 await后续代码
        //因为成功和失败的情况的逻辑是不一样的
        //进行到这里会主动报个错,但不会影响运行
        return Promise.reject(res.data)
    }
}

//导出
export default http

app.js

js 复制代码
//从utils导入http
import http from './utils/http'

//注册到全局wx实例中
wx.http=http

App({
  //提前声明的变量名
  token:wx.getStorageSync('toke'),
  refreshToken:wx.getSystemInfoAsync('refreshToken'),
  
  setToken(key,token){
    //保存token到全局(中括号使这个key表示的变量名)
    this[key]=token

    //保存token到本地缓存
    wx.setStorageSync(key, token)
  }

 })
 

效果演示:

(红色的报错是因为我们设置拦截器判断并拒绝了失败的情况,不影响程序运行)
相关推荐
JasonMa1536 小时前
从零搭建一个微信小程序活动管理平台(一):架构设计与技术选型
javascript·微信小程序·node.js
游戏开发爱好者813 小时前
iOS应用加固方案全解析:源码加固与IPA在线加固对比
android·macos·ios·小程序·uni-app·cocoa·iphone
2301_810313181 天前
宠物服务APP开发宠物社交上门喂养洗护商城系统源码搭建
小程序·团队开发·软件需求·宠物
momodira81 天前
防溺水作品投票小程序选哪个?
小程序·投票工具·线上制作教程
鲁Q同志1 天前
微信小程序【uni-file-picker文件预览】
微信小程序·小程序
2601_963869951 天前
【计算机毕业设计】基于微信小程序的拼车服务系统设计与实现
微信小程序·小程序·课程设计
2501_915909062 天前
iOS应用性能监控 Instruments工具与崩溃日志分析完整指南
android·ios·小程序·https·uni-app·iphone·webview
人脸核身安全官2 天前
人脸核身SDK接入实测:H5/小程序常见兼容问题与通过率优化
小程序·人脸识别·人脸比对·活体检测·实人认证·h5人脸核验·旷视
2501_915918412 天前
详解iOS App上架至App Store的全流程步骤与注意事项
android·macos·ios·小程序·uni-app·cocoa·iphone
greenbbLV2 天前
积分兑换商城供应商挑选:避坑要点与靠谱选择解析
前端·小程序