<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • uni-app uni.request接口封裝

          2020-4-9    seo達人

          uni-app uni.request接口封裝

          今天在做uni-app項目時,發現在uni-app中 調取后臺接口需要大量的重復編輯,就在想能不能封裝一個如同Vue項目中的this.$axios.get(url,data).then();格式,這樣就減少了很多代碼重復!!

          封裝為如同this.$axios.get(url,data).then();格式

          第一步、

          我們先在index首頁中的組件部分,創建一個js文件;





          第二步、

          我們在uni-app的入口文件中引入request.js文件;

          在入口文件中掛載到uni-app實例上;





          第三步、

          開始接口封裝:

          (以下為js文件代碼)



          //先把接口暴露出去

          export default{

          //我們先定一個uni-app方法 以便于以下操作使用uni-app調取接口時便利

          request(options){

          ///我們使用Promise方法來實現調用接口時后面多個.then()的方法

          //只有Promise能實現如同$axios后面連續多個.then()的方法

          return new Promise((reslove,reject)=>{

          uni.request({

          ...options,

          success:res=>{

          //判斷我們在使用封裝的自定義時第三個參數是否為native

          //當native為true時 我們返回原數據

          if(options.native){

          reslove(res)

          }

          //當native為false時 我們直接返回data中的數據

          if(res.statusCode === 200){

          reslove(res.data)

          }else{

          //加入接口參數錯誤或接口地址錯誤時 我們返回原錯誤提示

          reject(res)

          }

          }

          })

          })

          },

          //在方法中 第二個參數和第三個參數用ES6新語法來添加默認值

          //接口調取get方法

          get(url,data={},options={}){

          //我們把傳過來的參數賦給options,這樣我們在使用uni-app

          //this.request()方法時 傳遞一個參數就可以

          options.url = url;

          options.data = data;

          options.method = 'get';

          //調用上面自己定義的this.request()方法傳遞參數

          return this.request(options)

          },

          //接口調取post方法

          post(url,data={},options={}){

          options.url = url;

          options.data = data;

          options.method = 'post';

          return this.request(options)

          }

          }



          這樣我們就已經封裝完成啦,接下來就是 在頁面內使用!

          第四步、

          我們可以在頁面中來調取已經封裝好的自定義事件啦



          例一:

          個人建議使用ES6新語法 箭頭函數 不然使用this還要重新在外面聲明定義,太麻煩了,使用箭頭函數就會方便很多



          // 已封裝好的接口方法

          //本案例調取接口時 沒有參數上傳 直接調用的

          //這樣使用方法時只傳遞了一個參數,也就是接口地址

          //第二個參數沒有寫,默認為空;假如有參數的話 可以直接填寫

          //后面的參數都為接口內已經定義好的默認值:{}空對象

          //里面的res為接口返回數據中的data里面的內容

          this.$H.get('/api/getIndexCarousel.jsp').then(res=>{

          //res打印出來是接口返回數據中data里面的數據

          console.log(res)

          //賦給數據區的變量,方便本頁面使用

          this.swiperData = res

          });



          例二、



          // 已封裝好的接口方法

          //本案例使用時 傳遞了三個參數

          //第一個為:接口地址

          //第二個為:調取接口傳遞的參數,方法使用時不用傳參,寫空對象就好

          //第三個為:自定義事件中 native 的屬性 若為true 則返回原數據

          //若想返回原數據,必須要填寫第二個參數,若沒有參數,也要寫空對象

          //因為方法調用時 是按照傳參順序調用的,若不寫 參數傳遞就會出錯

          this.$H.get('/api/getIndexCarousel.jsp',{},{

          native:true

          }).then(res=>{

          //res打印出來的數據是接口返回來的原數據

          console.log(res)

          //賦給數據區的變量,方便本頁面使用

          this.swiperData = res

          });




          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://m.sdgs6788.com

          存檔

          国产色综合久久无码有码| 亚洲成色WWW久久网站| 亚洲精品无码久久一线| 国内精品人妻无码久久久影院导航 | 久久亚洲中文字幕精品一区| 久久久久人妻精品一区 | 人妻久久久一区二区三区| 热RE99久久精品国产66热| 狠狠色噜噜狠狠狠狠狠色综合久久 | 99久久精品免费观看国产| 久久精品中文无码资源站| 国产成人无码精品久久久久免费| 久久精品亚洲一区二区三区浴池| 国产精品成人无码久久久久久 | 一本色道久久综合| 久久精品国产第一区二区| 久久久91精品国产一区二区三区| 久久天堂AV综合合色蜜桃网| 久久午夜综合久久| 久久精品国产精品亚洲| 久久er99热精品一区二区| 婷婷久久综合九色综合绿巨人| 久久99精品久久只有精品| 久久综合狠狠综合久久| 无码任你躁久久久久久久| 亚洲乱亚洲乱淫久久| 99久久婷婷国产综合亚洲| 伊人久久综合成人网| 国产精品久久久久久五月尺| 91超碰碰碰碰久久久久久综合| 久久久久亚洲av无码专区| 777午夜精品久久av蜜臀| 亚洲第一永久AV网站久久精品男人的天堂AV | 国产精品热久久毛片| 精品蜜臀久久久久99网站| 国产69精品久久久久APP下载| 蜜桃麻豆www久久国产精品| 久久久久综合国产欧美一区二区| 久久精品国产黑森林| 亚洲伊人久久综合影院| 午夜精品久久久久久久久|