日韩欧美三区_丁香五月久久婷婷久久_成人文学网站_爆爽久久久一区二区又大又黄又嫩_92午夜一百集视频在线观看_午夜影院和集1000_国产又爽又黄无码无遮挡在线观看_女人被添全过程A片免费视频_成人性生交大片免费看R链接_国产美女一区二区在线观看_麻花豆传媒剧国产MV在线上-_久久特级毛片_国产成熟妇人高潮A片_伊人久久亚洲精品一区_88华人永久免费_亚洲 欧美 视频 卡通动漫_丁香花视频在线观看_男女又色又爽又爽视频_香蕉噜噜噜噜私人影院_182tv观免费现看

網(wǎng)站建設(shè)資訊

?微信小程序request封裝

網(wǎng)站制作 2018-11-29 10:22:06 | 閱讀:1763
微信小程序request封裝
Request的做小程序是必不可少的,所有后端網(wǎng)絡(luò)請(qǐng)求都要用到request,雖然微信的request相對(duì)來說已經(jīng)很簡潔,但對(duì)http status code的判斷,處理異常都不是很方便
首先新建一個(gè)request.js
 
class request {
  constructor() {
    this._header = {'content-type': 'application/x-www-form-urlencoded'}
  }
 
  /**
   * 設(shè)置統(tǒng)一的異常處理
   */
  setErrorHandler(handler) {
    this._errorHandler = handler;
  }
 
  /**
   * GET類型的網(wǎng)絡(luò)請(qǐng)求
   */
  getRequest(url, data, header = this._header) {
    return this.requestAll(url, data, header, 'GET')
  }
 
  /**
   * DELETE類型的網(wǎng)絡(luò)請(qǐng)求
   */
  deleteRequest(url, data, header = this._header) {
    return this.requestAll(url, data, header, 'DELETE')
  }
 
  /**
   * PUT類型的網(wǎng)絡(luò)請(qǐng)求
   */
  putRequest(url, data, header = this._header) {
    return this.requestAll(url, data, header, 'PUT')
  }
 
  /**
   * POST類型的網(wǎng)絡(luò)請(qǐng)求
   */
  postRequest(url, data, header = this._header) {
    return this.requestAll(url, data, header, 'POST')
  }
 
  /**
   * 網(wǎng)絡(luò)請(qǐng)求
   */
  requestAll(url, data, header, method) {
    return new Promise((resolve, reject) => {
      wx.request({
        url: url,
        data: data,
        header: header,
        method: method,
        success: (res => {
          if (res.statusCode === 200) {
            //200: 服務(wù)端業(yè)務(wù)處理正常結(jié)束
            resolve(res) 
            //請(qǐng)求返回401 跳轉(zhuǎn)登陸          
            if(res.data.code=="401"){
              wx.reLaunch({
                url: '/pages/login/index',
              })
            }       
          } else {
            //其它錯(cuò)誤,提示用戶錯(cuò)誤信息
            if (this._errorHandler != null) {
              //如果有統(tǒng)一的異常處理,就先調(diào)用統(tǒng)一異常處理函數(shù)對(duì)異常進(jìn)行處理
              this._errorHandler(res)
            }
            reject(res)
          }
        }),
        fail: (res => {
          if (this._errorHandler != null) {
            this._errorHandler(res)
          }
          reject(res)
        })
      })
    })
  }
}
 
export default request
 
 
新建getApi.js
 
import request from './request.js'
import utilMd5 from './md5.js'
class getApi{
  constructor() {
    this._baseUrl = 'https:xxxx'
    this._defaultHeader = {
      'data-tupe': 'application/json'
    }
    this._request = new request
    this._request.setErrorHandler(this.errorHander)
    this._key = 'szfangwei_net'
  }
 
  /**
   * timestamp
   */
  timestamp() {
    //獲取當(dāng)前時(shí)間戳
    let timestamp = Date.parse(new Date());
    timestamp = timestamp / 1000;
    //獲取當(dāng)前時(shí)間
    let n = timestamp * 1000;
    let date = new Date(n);
    let Y = date.getFullYear(); //年   
    let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1); //月   
    let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); //日   
    let h = date.getHours(); //時(shí)   
    let m = date.getMinutes(); //分   
    let s = date.getSeconds(); //秒
    return Y.toString() + M + D + h + m + s;
  }
 
  /**
   * 公共參數(shù)
   */
  connDate(data) {
    let timestamp = this.timestamp();
    let conn = {
      timestamp: timestamp,
      token: utilMd5.hexMD5(timestamp + this._key),
    }
    return Object.assign(conn, data);
  }
 
  /**
   * 統(tǒng)一的異常處理方法
   */
  errorHander(res) {
    console.error(res)
  }
 
 
 
  /**
   * 驗(yàn)證token
   */
  getToken(session3rd) {
    let url = "User/xxx"
    let data = {
      device_token: 'wechat',
      session3rd: session3rd
    }
    return this._request.getRequest(this._baseUrl + url, this.connDate(data)).then(res => res.data)
  }
 
 
 
 
 
 
  /**
   * 獲取項(xiàng)目
   */
  getProject(session3rd, userID, cpage,k='') {
    let url = "Project/xx"
    let data = {
      session3rd: session3rd,
      userID: userID,
      cpage: cpage,
      k:k
    }
    return this._request.getRequest(this._baseUrl + url, this.connDate(data)).then(res => res.data)
  }
 
}
export default getApi
 
 
最后在app。Js實(shí)例化
Import getApi from ‘./apis/request.js’
getApi:new getApi()
 
 
在pages里使用
Const app = getApp();

getdataList() {
    app.getApi.getCourseList(this.data.xx)
      .then(res => {
       
        this.setData({
          list: list
        })
      })
      .catch(res => {
        //you code
      })
  },
主站蜘蛛池模板: 治多县| 安泽县| 乌兰察布市| 梁山县| 襄垣县| 岳池县| 双鸭山市| 大新县| 巨鹿县| 桂平市| 泊头市| 临武县| 秦皇岛市| 通许县| 台中县| 沙洋县| 山丹县| 元阳县| 绥化市| 定陶县| 华宁县| 丰台区| 灯塔市| 常德市| 岑溪市| 美姑县| 札达县| 富蕴县| 罗城| 海兴县| 新巴尔虎左旗| 元谋县| 龙陵县| 镇康县| 都匀市| 邻水| 佛冈县| 武宣县| 东明县| 建德市| 孝义市|