私は最近、自分自身で小さなプログラム開発を試みましたが、常に落とし穴がありますが、リクエストの部分は本当に醜いと思うので、ご存知のとおり、Promise を使用してリクエストを単純にカプセル化しました。この記事で説明する方法は主にサードパーティのログインを対象としています。
これ以上はナンセンスです。コードを投稿してください:
ビジネス関連の 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 }) }) }
上記のコードは、この方法が気に入るかどうかわかりません。 次に、パッケージ化方法を見てみましょう。
Promise を使用して wx.request をカプセル化します
当社の Web サイトのほとんどはログイン ステータスを維持するために 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 }
上記のコードは次のようになります。 手順が増えているように見えますが、この利点は、ビジネスコードではなくビジネスだけに焦点を当てていることです。もちろん、コンテンツ タイプの切り替えも便利です。パラメータを渡す方法が 1 つしかない場合は、これが私の最初の記事です。何人かの人を助けてほしいのは、偉い人たちがあなたにアドバイスやアドバイスをくれることです。
関連する推奨事項:
WeChat アプレット wx.request は、バックグラウンド データ インタラクション機能分析を実現します
アプレット開発 - ネットワーク リクエスト wx.request サンプル チュートリアル
アプレット開発 - wx.request 非同期カプセル化 サンプル チュートリアル
以上がWeChat アプレット wx.request のカプセル化の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。