欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

全網(wǎng)小程序接口請(qǐng)求封裝實(shí)例 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識(shí)

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >

全網(wǎng)小程序接口請(qǐng)求封裝實(shí)例

發(fā)表時(shí)間:2021-1-5

發(fā)布人:葵宇科技

瀏覽次數(shù):43

在utils文件夾里面新建兩個(gè)js文件,一個(gè)是api.js、一個(gè)就是requtil.js

api.js

這個(gè)文件主要api接口,廢話不多說直接上代碼了

const request = require('requtil.js')
/*Apis 把全部api都存在這里*/
const Apis = { 
   /* 用戶相關(guān) */
  'login': '/devicecenter/auth/weChtLoin',
  'bindUser': '/devicecenter/user/userBindinOpenId',
  'genQrCode': '/devicecenter/user/getUserRcode',
  
   /* 設(shè)備相關(guān) */
  'getDeviceList': '/minipro/group/getDl', // 獲取設(shè)備列表
  'getDeviceAdd': '/minipro/group/addDl', //  添加設(shè)備
  'getDeviceDtl': '/minipro/group/delDl', //  刪除設(shè)備
}
/* 定義請(qǐng)求方法 */
const user = {
  login: function(data) {
    request.get(Apis.login, data)
  },
  getSecret: function(data) {
    request.get(Apis.getSecret, data)
  },
}
module.exports = {
  ...user
}
復(fù)制代碼
requtil.js

把微信的wx.request請(qǐng)求進(jìn)行分開封裝

const globalsetting = require('globalsetting.js')
const baseURL = globalsetting.server
const util = require('util.js')

const ignoreUrls = [
  '/auth/weChatLogin',
  '/user/userBindingOpenId',
  '/user/getSecret',
  '/user/getOpenId'
]
var token = ''

function post(url, args) {
  args = _prev(url, 'POST', args)
  wx.request(args)
}
function get(url, args) {
  args = _prev(url, 'GET', args)
  wx.request(args)
}
function put(url, args) {
  args = _prev(url, 'PUT', args)
  wx.request(args)
}
function _delete(url, args) {
  args = _prev(url, 'DELETE', args)
  wx.request(args)
}
function _prev(url, method, args) {
  // console.log('123',args)
  args = args || {}
  args.url = url
  if(args.urlparam) 
    args.url += '/' + args.urlparam
  var params = parseParams(args)
  params.method = method
  params.success = success(params.success)
  params.fail = fail(params.fail)
  setToken(params)
  return params
}
// 處理接口是否需要添加header.token方法
function setToken(params) {
  if (!ignoreUrls.some(url => params.url.match(new RegExp(url)))) {
    if (!params.header)
      params.header = { token: getToken() }
    else 
      params.header.token = getToken()
  } else {
    // console.log('ignore: ', params.url)
  }
}
// 處理接口參數(shù)方法
function parseParams(args) {
  var params = Object.assign(args)
  if (!(params.url.startsWith('https://') || params.url.startsWith('http://')))
    params.url = baseURL + params.url
  if(params.param) {
    if (params.url.indexOf('?') > -1 && params.url.indexOf('?') != params.url.length - 1) {
      params.url += '&' 
    } else if(params.url.indexOf('?') == params.url.length -1) {
      // 無任何操作
    } else {
      params.url += '?'
    }
    var buf = ''
    for(var name in params.param) {
      let val = params.param[name];
      buf += name + '=' + encodeURI(typeof val == 'object' ? JSON.stringify(val) : val) + '&'
    }
    params.url += buf
  }
  return params
}
// 接口返回成功方法
function success(callback) {
  return function(rs) {
    var status = rs.statusCode
    if (status == 405) {
      util.errorMsg('請(qǐng)求失敗405:\n服務(wù)器返回失敗')
    } else if(status == 404) {
      util.errorMsg('請(qǐng)求失敗404:\n找不到接口')
    }
    if(callback) callback(rs.data)
  }
}

function fail(callback) {
  return function(rs) {
    console.log(rs)
    if(callback) callback(rs)
  }
}
// 獲取接口請(qǐng)求回來的token
function _setToken(tk) {
  token = tk
  wx.setStorageSync('token', token)
}
復(fù)制代碼
頁面怎么調(diào)用

在全局的app.js里面
import api from './utils/apis.js';
App({
    api: api,
})
復(fù)制代碼
index頁面

通過getApp()獲取api接口,自定義一個(gè)函數(shù)里面用到了promise方法獲取數(shù)據(jù),然后在getDevList調(diào)用getChatRecord方法,就可以數(shù)據(jù)賦值

const APP = getApp()
getDevList(e){
  this.getChatRecord().then(res => {
    wx.hideLoading({
      success: (res) => {},
    });
    if(res.id == '-1') {
      utils.errorMsg(res.message);
    }else {
      console.log(res)
    }
  })
}
// 設(shè)備列表請(qǐng)求接口
getChatRecord (params = {}) {
  return new Promise((resolve, reject) => {
    APP.api.getDeviceList({
      success: res => {
        resolve(res)
      }
    })
  })
},
復(fù)制代碼

后期我會(huì)做一個(gè)demo出來,放到github上面,這樣你們看起來更直觀一些


作者:sosojie
來源:掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

相關(guān)案例查看更多