怎麼封裝微信小程序的數據請求 - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

怎麼封裝微信小程序的數據請求

發表時間:2020-9-22

發布人:葵宇科技

浏覽次數:48

1.目錄結構

在根目錄下(xià)創建http目錄及api.js文(wén)件fetch.js以及http.js文(wén)件;

在這裡插入圖片描述
在根目錄下(xià)創建env目錄,創建index.js配置并導出多個(gè)開發環境
在這裡插入圖片描述

module.exports={
  //開發環境
  Dev:{
    "BaseUrl":"https://www.develep.com"
  },
  //測試環境
  Test:{
    "BaseUrl":"https://www.test.com"
  },
  //生産環境
  Prod:{
    "BaseUrl": "https://api.douban.com"
  }
}

在api.js中(zhōng)統一管理,請求的url地址

module.exports={
  "hot":"/v2/movie/in_theaters",
  "top250": "/v2/movie/top250",
  "detail": "v2/movie/subject"
}

在fetch.js中(zhōng)用promise對wx.request()進行封裝

//封裝 http
module.exports= (url, path,method, params)=>{
    return new Promise((resolve, reject) => {
      wx.request({
        url: `${url}/${path}`,
        method:method,
        data: Object.assign({}, params),
        header: { 'Content-Type': 'application/text' },
        success: resolve,
        fail: reject
      })
    })
}


在http.js,根據當前環境,設置相應的baseUrl, 引入fetch中(zhōng)封裝好的promise請求,封裝基礎的get\post\put\upload等請求方法,設置請求體,帶上token和(hé)異常處理等;
設置對應的方法并導出;

const api = require('./api.js')
const config=require('../env/index.js');
const fetch=require('./fetch.js');
let Env='Prod';

let baseUrl = config[Env].BaseUrl;
let key ='?apikey=0b2bdeda43b5688921839c8ecb20399b'
console.log(baseUrl);
console.log(api)

function fetchGet(path,params){
  return fetch(baseUrl,path,'get',params);
}


function fetchPost(path,params){
  return fetch(baseUrl,path,'post',params);
}


module.exports={
  hot(paramas={}){
     return fetchGet(api.hot+key,paramas);
  },
  top250(params={}){
    return fetchGet(api.top250+key,params);
  },
  detail(id,params={}){
    return fetchGet(api.detail+`/${id}`+key,params)
  }
}

在全局app.js中(zhōng)導入http,注冊到根組件

const http=require('./http/http.js')

// App.config=config[env];
App({
  http, // http.fetch

})

在具體頁面導入,并使用;

//獲取應用實例
const app = getApp();
Page({
  data: {
   list:[]
  }
onLoad: function () {
    app.http.hot().then((res)=>{
                this.setData({
            list: res.data.list
        })    })
}

相關(guān)案例查看更多