微信小程序(二)-请求接口

官方给出的方式是wx.request,请求方式比较简单,下面是官方给出的请求实例。

wx.request({
  url: 'test.php', //仅为示例,并非真实的接口地址
  data: {
    x: '' ,
    y: ''
  },
  header: {
    'content-type': 'application/json'
  },
  success: function(res) {
    console.log(res.data)
  }
})
  • url:请求的接口地址
  • data:请求参数
  • header:请求头,包括host、User-Agent、Accept、Accpt-Language、Referer等
  • method:请求方式:POST/GET
  • success:接口请求成功回调,获取从服务器返回的数据。请求成功后获取到的数据就是success函数的参数result。
  • fail:接口请求失败回调。
  • complete:接口调用结束回调(调用成功、失败都会执行),通过this.setData将数据传递给WXML页面。

可以写一个公共函数,所有用到请求的地方都调用着一个函数就好了,下面是我在项目中用到的。

util.js

/**
 * 发送HTTPS请求
 * @param
 * method 请求方式
 * url 接口地址
 * data 参数
 */
function sendRequest (method, url, data) {
  let _this = this
  let header = { 'content-type': 'application/json' }
  # cookie携带其他参数,视情况而定。
  let cookie = wx.getStorageSync('cookieKey')
  if (cookie) {
    header.Cookie = cookie
  }
  # Promise是异步编程的一种解决方案
  let pro = new Promise(function(resolve) {
    wx.request({
      url: '服务器地址' + url,
      method,
      header,
      data,
      success (res) {
        # 成功后的处理
        ...
        resolve(res)
      }
    })
  })
  # 告诉调用函数已经请求完成
  return pro
}

# 因为上面这段代码不是写在app.js 所以需要暴露出去
module.exports = {
  sendRequest
}

# 在app.js引入utils.js,如果不写这一句别的地方调用不到。
# 如果你将代码写在app.js中的话就不用管这些了。
utils: require('utils.js'),

调用方式:
例如在login.js中

# 获取应用实例
const app = getApp()

doLogin () {
  app.utils.sendRequest('POST', '接口地址', {
    username: 'xxx',
    password: 'xxx'
  }).then(res => {
    # 成功返回后处理数据
    if (res.data.code) {
      wx.showToast({ title: '登录成功', icon: 'success', duration: 1000 })
      # 坑爹的setData...
      # 这里注意,返回数据不能直接用 this.xxx = xxx 来赋值,不仅不会作用到页面,还会导致数据不一致,所以切记,使用`this.setData({})`来做页面回显。
      this.setData({
        userInfo: res.userInfo
      })
      ...
    }
  })
}

— END —

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值