您當前位置>首頁 » 新聞資(zī)訊 » 小程序相關(guān) >
怎麼封裝微信小程序的數據請求
發表時間: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
}) })
}