中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序中wx.request封裝的示例分析

發布時間:2021-06-07 10:31:35 來源:億速云 閱讀:136 作者:小新 欄目:移動開發

這篇文章主要為大家展示了“微信小程序中wx.request封裝的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“微信小程序中wx.request封裝的示例分析”這篇文章吧。

業務相關 js

// 獲取剩余金額 --- GET 請求無參數
  getBalance: function () {
    api.getBalance().then(data => {
      let balance = data.data
      balance.balance = balance.balance.toFixed(2)
      this.setData({
        balance: { ...balance }
      })
    })
  },
  // 獲取昨日消費數據 --- POST 請求,使用 application/x-www-form-urlencoded 傳參
  getLastCost: function () {
    let yestoday = util.transDate('', -1)
    let data = {
      subAccountIdx: 0,
      startDay: yestoday,
      endDay: yestoday,
      type: 0,
      business: 0,
      export: false
    }
    api.getLastCost(data, 'application/x-www-form-urlencoded', 'POST').then(data => {
      let lastCost = data.data.record.totalConsumeMoney
      lastCost = lastCost.toFixed(2)
      this.setData({
        lastCost: lastCost
      })
    })
  }

從上面的代碼是業務部分代碼,不知道你是否喜歡這種方式呢,接下來就看看 封裝方式 和 業務對應的配置 js

使用 Promise 封裝 wx.request

我們大部分網站都是用 cookie 來維護登錄狀態的,但是小程序是無法用 cookie 來維護登錄狀態的,那么我們先獲取請求頭的 cookie, 然后將 cookie 保存在全局變量當中(相信獲取 cookie 肯定沒問題吧, 這部分就不展示了)

// wx.request 封裝
var app = getApp() 
function wxRequest(url, config, resolve, reject) {
  let { 
    data = {},
    contentType = 'application/json',
    method = 'GET',
    ...other
  } = {...config}
  wx.request({
    url: url,
    data: {...data},
    method: method,
    header: {
      'content-type': contentType,
      'Cookie': app.globalData.cookie  // 全局變量中獲取 cookie
    },
    success: (data) => resolve(data),
    fail: (err) => reject(err)
  })
}
module.exports = {
  wxRequest: wxRequest
}

封裝的代碼很簡單,接下來就是配置代碼了

業務對應的配置 js

// 用 import 或者 require 引入模塊 
import util from '../../../util/util.js'
var Promise = require('../../../plugin/promise.js')    // 請注意 Promise 要手動引入,內測版是自動引入的
// 獲取個人信息
const API_USERINFO = "https://www.***/get"
// 獲取剩余金額
const API_BALANCE = 'https://www.***/get'
// 獲取昨日消費數據
const API_LASTCOST = 'https://www.***/get'
// 獲取個人信息事件  
function getUserInfo(data, contentType) {
  var promise = new Promise((resolve, reject) => {
    util.wxRequest(API_USERINFO, { data, contentType }, resolve, reject)
  })
  // return promise
  return promise.then(res => {
    return res.data
  }).catch(err => {
    console.log(err) 
  })
}
// 獲取剩余金額事件
function getBalance(data, contentType) {
  var promise = new Promise((resolve, reject) => {
    util.wxRequest(API_BALANCE, { data, contentType }, resolve, reject)
  })
  // return promise
  return promise.then(res => {
    return res.data
  }).catch(err => {
    console.log(err)
  })
}
// 獲取昨日消費數據
function getLastCost(data, contentType, method) {
  var promise = new Promise((resolve, reject) => {
    util.wxRequest(API_LASTCOST, { data, contentType, method }, resolve, reject)
  })
  // return promise
  return promise.then(res => {
    return res.data
  }).catch(err => {
    console.log(err)
  })
}
module.exports = {
  getUserInfo: getUserInfo,
  getBalance: getBalance,
  getLastCost: getLastCost
}

上面的代碼看起來像是步驟變多了,但是這樣的好處是維護方便,在業務代碼里只關注業務,而不用去關注請求的本身,content-type 切換也方便,當然如果你們的傳參方式只有一種可以寫死更簡單一些,作為前端菜鳥的第一篇文章希望能幫助到幾個人,最希望大佬們不吝賜教,指點指點。

以上是“微信小程序中wx.request封裝的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达孜县| 台南县| 乌苏市| 章丘市| 台山市| 嘉鱼县| 贵定县| 武定县| 新乡市| 广昌县| 岳普湖县| 南丹县| 富裕县| 泾川县| 星子县| 财经| 金乡县| 新郑市| 平乐县| 山阴县| 苏州市| 华蓥市| 思茅市| 军事| 叶城县| 突泉县| 讷河市| 南陵县| 增城市| 内黄县| 邵东县| 厦门市| 古丈县| 汾西县| 温宿县| 安康市| 怀化市| 临安市| 威信县| 普宁市| 呼图壁县|