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

注释很详细,直接上代码

上一篇

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

 })
 

效果演示:

(红色的报错是因为我们设置拦截器判断并拒绝了失败的情况,不影响程序运行)
相关推荐
Emma歌小白2 天前
如何首次运行小程序后端
微信小程序
赣州云智科技的技术铺子2 天前
【一步步开发AI运动APP】十二、自定义扩展新运动项目1
微信小程序·小程序·云开发·智能小程序
2501_915918412 天前
iOS 上架全流程指南 iOS 应用发布步骤、App Store 上架流程、uni-app 打包上传 ipa 与审核实战经验分享
android·ios·小程序·uni-app·cocoa·iphone·webview
00后程序员张2 天前
iOS App 混淆与加固对比 源码混淆与ipa文件混淆的区别、iOS代码保护与应用安全场景最佳实践
android·安全·ios·小程序·uni-app·iphone·webview
破无差3 天前
《赛事报名系统小程序》
小程序·html·uniapp
00后程序员张3 天前
详细解析苹果iOS应用上架到App Store的完整步骤与指南
android·ios·小程序·https·uni-app·iphone·webview
海绵宝宝不喜欢侬3 天前
uniapp-微信小程序分享功能-onShareAppMessage
微信小程序·小程序·uni-app
2501_915106323 天前
Xcode 上传 ipa 全流程详解 App Store 上架流程、uni-app 生成 ipa 文件上传与审核指南
android·macos·ios·小程序·uni-app·iphone·xcode
亮子AI3 天前
【小程序】微信小程序隐私协议
微信小程序·小程序
weixin_177297220693 天前
短剧小程序系统开发:打造个性化娱乐新平台
小程序·娱乐·短剧