收藏
回答

小程序登录判断重复请求后端接口?

是这样的,我们的后端接口请求都必须带上一个token,这个token的获取是小程序wx.login以后拿到的code去后端,后端返回的一个token,我们存储在本地。所以前端的逻辑是:所有的接口请求先判断本地是否存储的有token,如果有,那么就直接请求皆苦,如果没有,那么就先调用wx.login去后端获取token。问题来了: 新用户进入首页的时候,会调用多个接口请求,这个时候每个接口都会做这个判断,这个时候本地没有token,那么都会触发wx.login,拿到code去后端获取token的这个动作,所以这个动作会重复,那么怎么解决掉这个重复问题呢

回答关注问题邀请回答
收藏

1 个回答

  • xplee
    xplee
    2020-05-22

    我想到的办法:

    1. 如果可以的话多个接口合并成一个接口;
    2. 优先调用其中一个接口,然后在其回调中调用剩下的其他接口;
    3. 小程序启动的时候App.onLaunch就先调用一个接口,检查token是否存在,不存在就换取token


    2020-05-22
    有用
    回复 6
    • xplee
      xplee
      2020-05-23
      最不济就是使用setTimeout()延时请求,尽量保证setTimeout前的一个请求可以拿到token
      2020-05-23
      回复
    • 😄~  狂奔的蜗牛😄
      😄~ 狂奔的蜗牛😄
      2020-05-23
      首先谢谢你的回答,针对你的回答我补充疑问
      1.采用这种方式需要后端人员配合;其次,如果小程序是分享出去的某个页面的话,用这种方式就会把所有页面的接口都合并成一个,所以可能不可取
      2.因为可能是分享出去的页面,所以这个优先的接口也没法做
      3.方式3比较可取,但也有问题,因为这个token是存在时效性,当接口请求时,后端返回token是失效状态,这个时候也会重新触发wx.login重新来获取token的问题
      2020-05-23
      回复
    • xplee
      xplee
      2020-05-23回复😄~ 狂奔的蜗牛😄
      如果token变成失效状态时,是需要重新换取token的,这个没有问题。只不过在App.onLaunch时,需要做两种逻辑一是判断是否存在,不存在就请求接口拿token,二是存在时顺便检查下token的有效性,无效或失效就重新请求token。


      如果你们有类似登录的页面就简单多了,直接跳转到那个页面,重新走登录流程。
      2020-05-23
      回复
    • 😄~  狂奔的蜗牛😄
      😄~ 狂奔的蜗牛😄
      2020-05-23
      “存在时顺便检查下token的有效性,无效或失效就重新请求token” 这个情况是: 用户正在使用的时候,token失效了。不是重新进小程序的时候
      2020-05-23
      回复
    • xplee
      xplee
      2020-05-23
      嗯,正在使用时失效也可能。但正在使用的场合一般只会由某一个接口触发,就不存在有多个地方都去执行wx.login
      2020-05-23
      回复
    查看更多(1)
登录 后发表内容
问题标签