很多初学者并不懂这个 wx.request 如何正确的二次封装。

初学者都会知道使用 wx.request 去请求接口,成功后可以接受到 json 等数据文件,但我们后端给的数据往往都在前端接受到的数据里 data 中。每次返回的数据你都要在 response.data 中才取得到。当然还有更重要的一点,如果要改 域名/ip,你需要每个 wx.request 都改 url,这得多麻烦。因此对其进行二次封装是非常有必要的。

常规的,我们在 /utils/request.js 封装函数。

export default (url, data = {}, method = 'GET') => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: 'http://127.0.0.1:3000' + url,
      data,
      method,
      header: {xx:xxx},
      success: (res) => {
        console.log('请求成功', res)
        // 直接返回data中的数据
        resolve(res.data)
      },
      fail: (err) => {
        console.log('请求失败', err)
        reject(err)
      }
    })
  })
}
  • url:必传,直接传资源路径,例如:/recommend/songs
  • data={}:传参数,不传则默认为空对象。
  • method = 'GET':传请求方式,不传则默认get请求
  • header:可以在登录后携带一些认证信息,例如 'Authorization' : 'Bearer xxxxxxxxxxxxx'
  • resolve(res.data):请求成功直接返回 data 中的数据。

使用方法:

在其他 js 页面中导入,调用即可。

import request from '/utils/request'

 // 获取用户每日推荐音乐
 async getRecommendList() {
   let recommendListData = await request('/recommend/songs')
   this.setData({
     recommendList: recommendListData.recommend
   })
 },

Last modification:March 6, 2021
如果觉得我的文章对你有用,请随意赞赏