小程序最常被问的两道面试题

175 阅读2分钟

小程序最常被问的两道面试题:如何授权登录;如何请求接口

也可能是我被问的最多的,哈哈哈哈!!!(毕竟太菜了,记录一下)


接下来,我们聊聊:

小程序如何授权登录

大家最常见的就是这张图:

image.png 那么,用代码来解释,如下:

    wx.login({
      success: res => {
        console.log(res.code)
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        wx.showLoading({title: '加载中...'})
        wx.request({
          url: '',
          method: 'POST',
          data: {},
          success: (res) => {
            console.log(res);
          },
          fail: (err) => {
            console.log(err);
          },
          complete: () => {
            console.log('已完成'); 
            wx.hideLoading()
          }
        })
      },
    })

用语言描述:

  • 点击登录按钮,调用wx.login(),在其回调中获取到前端小程序临时凭证code
  • 调用wx.request()请求登录接口,在其success回调中获取到openid sessionid(token), unionid, 将获取到的这些值都可以存放在storage中
  • 请求方法可以做一个封装,按实际业务来处理

小程序如何请求

在小程序里,与H5页面的请求方式不同,小程序中有自己的请求方法:wx.request,且必须是https协议请求。

下面,我们看一下代码

wx.request({  // 小程序请求方法

  url: 'https://test.com/getinfo', // 小程序请求接口

  success: function(res) { // 成功回调

    console.log(res)// 服务器回包信息 会接收到一个Object信息,包括:data,code,msg

  },
  fail: function(err) { // 失败回调
    console.log(err)
  }
  complete: function(err) { // 无论成功还是失败,总是会执行
    console.log(err)
  }
})

关于request中的参数

image.png

  • 超时时间:小程序request默认超时时间是60S,我们可以在配置里修改超时时间
"networkTimeout": {

    "request": 3000

  }
  • 当我们请求的时候需要加一个‘加载中...’的状态,可以在请求之前加上wx.showLoading(),在complete回调中关闭:wx.hideLoading()[因为complete总是会被执行]

  • 有一点要注意,主要成功收到服务器返回,无论HTTP状态码是多少都会进入success回调,因此需要自己对回报的返回码进行一次逻辑判断。