1. 程式人生 > >weex stream 方法封裝

weex stream 方法封裝

定義 lap 處理 req message gpo else turn console

1.封裝

api.js

// 配置API接口地址
const baseUrl = ‘http://www.kuitao8.com/‘;

// 引入 彈窗組件
var modal = weex.requireModule(‘modal‘);
// 引入 請求數據組件
var stream = weex.requireModule(‘stream‘);
// 身份驗證
import jwtdecode from ‘jwt-simple‘;

// 自定義判斷元素類型JS
function toType (obj) {
  return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
}

// 參數過濾函數
function filterNull (o) {
  for (var key in o) {
    if (o[key] === null) {
      delete o[key]
    }
    if (toType(o[key]) === ‘string‘) {
      o[key] = o[key].trim()
    } else if (toType(o[key]) === ‘object‘) {
      o[key] = filterNull(o[key])
    } else if (toType(o[key]) === ‘array‘) {
      o[key] = filterNull(o[key])
    }
  }
  return o
}

// 工具方法
function toParams(obj) {
  var param = ""
  for(const name in obj) {
    if(typeof obj[name] != ‘function‘) {
      param += "&" + name + "=" + encodeURI(obj[name])
    }
  }
  return param.substring(1)
};

/**
 * 接口處理函數
 */
function apiStream (method, url, params, success, failure) {
  // 過濾參數
  if (params) {
    params = filterNull(params)
  }

  /*** stream ***/
  if(method === ‘GET‘){
    // GET 方法
    stream.fetch({
      method: ‘GET‘,
      type: ‘text‘,
      url: baseUrl + url + toParams(params)
    }, function(res) {
      if (res.ok) {
        // 解密
        let currentData = jwtdecode.decode(res.data, ‘michahzdee2016‘, ‘HS256‘);
        success(currentData);
      }else {
        modal.toast({
          message: ‘請求失敗,請檢查網絡!‘,
          duration: 2
        })
      }
    })
  }else if(method === ‘POST‘){
    // POST 方法
    stream.fetch({
      method: ‘POST‘,
      type: ‘text‘,
      url: baseUrl + url,
      headers: {‘Content-Type‘:‘application/x-www-form-urlencoded‘},
      body: toParams(params)
    }, function(res) {
      if (res.ok) {
        // 解密
        let currentData = jwtdecode.decode(res.data, ‘michahzdee2016‘, ‘HS256‘);
        success(currentData);
      }else {
        modal.toast({
          message: ‘請求失敗,請檢查網絡!‘,
          duration: 2
        })
      }
    },function(progress) {
      //
    })
  }
};

// 返回在vue模板中的調用接口
export default {
  get: function (url, params, success, failure) {
    return apiStream(‘GET‘, url, params, success, failure)
  },
  post: function (url, params, success, failure) {
    return apiStream(‘POST‘, url, params, success, failure)
  },
  put: function (url, params, success, failure) {
    return apiStream(‘PUT‘, url, params, success, failure)
  },
  delete: function (url, params, success, failure) {
    return apiStream(‘DELETE‘, url, params, success, failure)
  }
}

2.entry.js 全局註冊

import api from ‘./api‘
// 將API方法綁定到全局
Vue.prototype.$api = api

3.頁面調用

let params = {
  catid:10,
  pagesize:20
}
/*請求數據*/
this.$api.get(‘webservice/Api/List?‘,params,function(data) {
  console.log(JSON.stringify(data));
})

.

weex stream 方法封裝