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