中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序封裝的HTTP請求示例【附升級版】

發布時間:2020-09-26 03:05:54 來源:腳本之家 閱讀:163 作者:zhy前端攻城獅 欄目:web開發

本文實例講述了微信小程序封裝的HTTP請求。分享給大家供大家參考,具體如下:

微信小程序里自己封裝了請求的函數,但幾乎每個頁面都要用到,所以為什么更方便的調用,再一次進行封裝。

在app.js里面定義個全局對象,這樣想要用到該函數,只需要在該頁面的js文件里面,請求一個app實例。

廢話不多說,先上代碼:

//全局對象httpClient
httpClient:{
  request:function(method,url,data){
    //返回一個promise實例
    return new Promise( (resolve,reject)=>{
       wx.request({
        url:url,
        data:data,
        mehtod:method,
        success:function(res){
          resolve(res)
        },
        fail:function(res){
          reject(res);
        },
        complete:function(){
          console.log('complete');
        }
      })
    })
  }
  //get方法:用來獲取數據
  get:function( url ) {
    return this.request('GET',url);
  },
  //post方法:用來更新數據
  post:function( url,data) {
    resturn this.request('POST',url,data);
  },
  //put方法
  put:function(url,data){
    return this.request('PUT', url, data);
  },
  //delete方法
  delete:function(url,data){
    return this.request('DELETE', url, data);
  }

在需要請求的頁面調用:

例如:登錄頁面login.js

//獲取app實例,從而調用全局對象的函數
var app=getApp();
login:function(){
  var url='http:xxxxx/login';
  var data={
    userName:'xxxxx',
    passwd:'xxxxxx'
  }
  app.httpClient.post( url,data )
    .then( res=>{console.log("請求成功時調用該函數")})
    .catch(res=>{console.log("請求失敗時調用該函數")})
}
//為了更好的閱讀,也可以將回調函數,定義在外面
//這樣
loginSuccess:function(){
  console.log("請求成功時調用該函數")
},
loginFail:function(){
  console.log("請求失敗時調用該函數")
},
login:function(){
  var self=this;
  var url='http:xxxxx/login';
  var data={
    userName:'xxxxx',
    passwd:'xxxxxx'
  }
  app.httpClient.post( url,data )
    .then( res=>self.loginSuccess())
    .catch(res=>self.loginFail())
}

是不是簡潔多了。。。。

附:升級版

上代碼

// 該函數怎么寫,需要跟后端人員協商返回的格式
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
    })
   }
  });
 },

希望本文所述對大家微信小程序開發有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西平县| 宣武区| 漳浦县| 毕节市| 泽普县| 浪卡子县| 宁陵县| 砚山县| 郴州市| 漳浦县| 广汉市| 连江县| 宁陕县| 稻城县| 班戈县| 桦甸市| 西丰县| 思南县| 永春县| 房山区| 上犹县| 宁夏| 安福县| 兖州市| 龙里县| 天峻县| 色达县| 南陵县| 清河县| 宾川县| 巩义市| 潢川县| 大宁县| 墨脱县| 饶河县| 嘉峪关市| 加查县| 秦安县| 会泽县| 泾川县| 长泰县|