1. 程式人生 > >微信小程式之封裝HTTP請求(升級版)

微信小程式之封裝HTTP請求(升級版)

// 該函式怎麼寫,需要跟後端人員協商返回的格式
function getErrorMsgByErrorNo(error_no) {
  let error_msg;
  switch (error_no) {
    case 100: error_msg = '操作失敗,請稍後再試!'; break;
    default: error_msg = '網路錯誤,請稍後再試!'; break;
  }
  return error_msg;
}
function handleData(res) {
  if (res.data.success) {
    if (typeof (res.data.body) === 'string'
) { return []; } else if (Array.isArray(res.data.body) === false) { const _arr = []; _arr.push(res.data.body); return _arr; } else { return res.data.body; } } else { if (res.data.error_no) { return { error_no: res.data.error_no, error_msg: getErrorMsgByErrorNo(res.data.error_no) }; } else
{ return { error_no: 123456, error_msg: '伺服器維護中,請稍後!' }; } } } const httpClient = { request: function (method, url, data) { return new Promise((resolve, reject) => { wx.request({ url: url, data: data, method: method, success: function
(res) {
resolve(handleData(res)) }, fail: function (err) { console.log('request fail ', err); resolve({ error_no: 100, error_msg: getErrorMsgByErrorNo(100) }) }, complete: function (res) { console.log("request completed!"); } }) }); }, get: function (url) { return this.request('GET', url); }, post: function (url, data) { return this.request('POST', url, data); }, put: function (url, data) { return this.request('PUT', url, data); }, delete: function (url, data) { return this.request('DELETE', url, data); }, }; module.exports = httpClient;

使用

function getMyselfData() {
  const _Url= urls.url;
  return httpClient.get(_Url);
}

 getData() {
    let resultsData = this.getMyselfData();
    resultsData.then((res) => {
      if (res.error_no) {
      // 只要有error_no就說明請求出現了錯誤
        this.toast.showToast({
          type: 'fail',
          title: res.error_msg,
        })
      } else {
        this.setData({
          journeyList: res.data
        })
      }
    });
  },