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

注释很详细,直接上代码

上一篇

新增内容:
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)
  }

 })
 

效果演示:

(红色的报错是因为我们设置拦截器判断并拒绝了失败的情况,不影响程序运行)
相关推荐
浩冉学编程1 小时前
微信小程序中基于java后端实现官方的文本内容安全识别msgSecCheck
java·前端·安全·微信小程序·小程序·微信公众平台·内容安全审核
ZC跨境爬虫3 小时前
Python Django开发者转向微信小程序:从架构理解到第一行代码的完整准备指南
开发语言·python·ui·微信小程序·django
程序鉴定师1 天前
如何选择合适的深圳小程序开发公司?
大数据·小程序
阿豪啊1 天前
微信小程序订阅消息实战:从模板配置到发送全流程
微信小程序
云起SAAS1 天前
私域直播系统UniApp源码 多商户商城+直播带货 微信小程序+H5+安卓iOS
android·微信小程序·uni-app·私域直播系统
代码不加糖1 天前
从零手写简易 Taro:20 行 JSX 如何变成小程序?(硬核实战)
小程序·taro
云云只是个程序马喽2 天前
AI漫剧创作系统开发定制指南
人工智能·小程序·php
斯班奇的好朋友阿法法2 天前
鸿蒙 vs iOS vs 微信小程序:开发平台全面对比
ios·微信小程序·harmonyos
cosinmz3 天前
图片太多太乱怎么整理?分享一个我最近常用的图片转 PDF方法
经验分享·小程序·pdf
科技互联.3 天前
2026年小程序定制市场:个性化需求激增,技术深度成竞争关键
人工智能·小程序