微信小程序網(wǎng)絡(luò)請求模塊封裝的具體實現(xiàn)
前言
在進(jìn)行一個微信小程序項目開發(fā)的時候我需要網(wǎng)絡(luò)請求模塊和后端數(shù)據(jù)進(jìn)行溝通; 接下來就和我一起簡單的封裝的一下網(wǎng)絡(luò)請求模塊吧。
具體實現(xiàn)
1. 確定結(jié)構(gòu)
在根目錄新建 service和apis文件夾;
service用來做網(wǎng)絡(luò)請求的基本配置和輸出公共的網(wǎng)絡(luò)請求方法;
apis用來創(chuàng)建對應(yīng)功能模塊的網(wǎng)絡(luò)請求方法(ex:操作音樂、操作視頻);
2. service 網(wǎng)絡(luò)請求的基本配置和公共方法
config.js 用來放置一些基本的配置:
//config.js const BASE_URL = "https://www.qq.com/apis" const TIMEOUT = 10000 export { BASE_URL, TIMEOUT }
這里我們簡單配置了網(wǎng)絡(luò)請求的地址BASE_URL和超時的時間TIMEOUT;
index.js創(chuàng)建網(wǎng)絡(luò)請求,生成公共方法:
import { BASE_URL, TIMEOUT } from './config' class MYRequest { request(url,method,data){ //返回Promise對象 return new Promise((resolve, reject)=> { wx.request({ url: BASE_URL + url, timeout: TIMEOUT, method: method, data: data, success: (res) => { resolve(res); }, fail: (res) => { reject(res); }, }) }) } get(url, params){ return this.request(url, "GET", params); } post(url, data){ return this.request(url, "POST", data); } } const myRequest = new MYRequest; export default myRequest;
這里使用的是微信小程序官方的網(wǎng)絡(luò)請求APIwx.request,對他進(jìn)行一個封裝。:參考地址;
為了讓我們能很方便的拿到數(shù)據(jù)和抓取錯誤,我們返回了一個Promise對象,使用的時候就像這樣:
myRequest.get('XXX', { data: data }).then(res=>{ //拿到數(shù)據(jù),處理數(shù)據(jù) }).cath(res=>{ //抓取錯誤 console.log(res); });
我們還新增兩個常用的網(wǎng)絡(luò)請求方法 get()和post(),在每次調(diào)用的時候執(zhí)行request(url, "GET/POST", params)方法進(jìn)行數(shù)據(jù)請求并返回Promise對象。
3. apis 創(chuàng)建對應(yīng)功能模塊的網(wǎng)絡(luò)請求方法
引入剛剛創(chuàng)建的service/index.js
//api_music.js import ApiService from "../service/index" export function getMusic(singer , limit = 10){ return ApiService.get('/music', { singer: singer, limit: limit, }) }
我們導(dǎo)出 getMusic(singer , limit = 10)方法,這樣我們就創(chuàng)建好了一個根據(jù)歌手名字查找歌曲的get網(wǎng)絡(luò)請求,當(dāng)我們在需要使用這個網(wǎng)絡(luò)請求的頁面的時候,我們只需要引入改方法,就可以直接使用了。
我個人喜歡對不同的功能模塊都創(chuàng)建一個js文件,api_music.js api_singer.js 這樣我看到這個api文件我就可以知道他是干什么的屬于哪一個功能,我修改起來效率會高很多。
4. 使用
- 根據(jù)對應(yīng)的功能,引入該功能模塊需要用到的網(wǎng)絡(luò)請求方法;
// pages/music-list/index.js import {getMusic} from "../../apis/api_video"; Page({ /** * 頁面的初始數(shù)據(jù) */ data: { musicList: null }, /** * 生命周期函數(shù)--監(jiān)聽頁面加載 */ onLoad: function (options) { getMusic("周杰倫").then( res => { this.setData({musicList:res.data.data}) } ).catch( res => { console.log() } ); }, })
在生命周期的頁面加載階段的時候,調(diào)用getMusic() 獲取到需要的數(shù)據(jù),最后進(jìn)行頁面渲染。
總結(jié)
這就是我在微信小程序開發(fā)中所使用的網(wǎng)絡(luò)請求封裝方法,希望可以給大家?guī)韼椭?/p>
到此這篇關(guān)于微信小程序網(wǎng)絡(luò)請求模塊封裝實現(xiàn)的文章就介紹到這了,更多相關(guān)微信小程序網(wǎng)絡(luò)請求模塊封裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript createAdder函數(shù)功能與使用說明
createAdder(x)是一個函數(shù),返回一個函數(shù)。在JavaScript中,函數(shù)是第一類對象:另外它們可以被傳遞到其他函數(shù)作為參數(shù)和函數(shù)返回。在這種情況下,函數(shù)返回本身就是一個函數(shù)接受一個參數(shù),并增加了一些東西。2010-06-06微信小程序?qū)崿F(xiàn)歷史搜索功能的全過程(h5同理)
最近在使用微信小程序開發(fā)的時候遇到了一個需求,需要實現(xiàn)歷史搜索記錄的功能,所以下面這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)歷史搜索功能(h5同理)的相關(guān)資料,需要的朋友可以參考下2022-12-12使用濾鏡設(shè)置透明導(dǎo)致 IE 6/7/8/9 解析異常的解決方法
使用濾鏡設(shè)置透明導(dǎo)致 IE 6/7/8/9 解析異常的解決方法,需要的朋友可以參考下。2011-04-04JavaScript實現(xiàn)清空(重置)文件類型INPUT元素值的方法
這篇文章主要介紹了JavaScript實現(xiàn)清空(重置)文件類型INPUT元素值的方法,結(jié)合實例形式分析了javascript清空input文本框的常用方法與實現(xiàn)技巧,需要的朋友可以參考下2016-11-11詳解JS中的堆棧,事件循環(huán),執(zhí)行上下文和作用域以及閉包
這篇文章主要為大家詳細(xì)介紹了JavaScript中的堆棧,事件循環(huán),執(zhí)行上下文和作用域以及閉包的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-01-01