微信小程序网络请求模块封装的具体实现

 更新时间:2022年03月01日 10:42:52   作者:喜欢撸猫的帅伟  
大家做小程序项目的时候肯定会遇到数据对接需求,下面这篇文章主要给大家介绍了关于微信小程序网络请求模块封装的具体实现,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

在进行一个微信小程序项目开发的时候我需要网络请求模块和后端数据进行沟通; 接下来就和我一起简单的封装的一下网络请求模块吧。

具体实现

1. 确定结构

在根目录新建 service和apis文件夹;

service用来做网络请求的基本配置和输出公共的网络请求方法;

apis用来创建对应功能模块的网络请求方法(ex:操作音乐、操作视频);

2. service 网络请求的基本配置和公共方法

config.js 用来放置一些基本的配置:

//config.js
const BASE_URL = "https://www.qq.com/apis"
const TIMEOUT = 10000

export {
 BASE_URL,
 TIMEOUT
}

这里我们简单配置了网络请求的地址BASE_URL和超时的时间TIMEOUT;

index.js创建网络请求,生成公共方法:

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;

这里使用的是微信小程序官方的网络请求APIwx.request,对他进行一个封装。:参考地址;

为了让我们能很方便的拿到数据和抓取错误,我们返回了一个Promise对象,使用的时候就像这样:

  myRequest.get('XXX', {
    data: data
  }).then(res=>{
      //拿到数据,处理数据
  }).cath(res=>{
      //抓取错误
      console.log(res);
  });

我们还新增两个常用的网络请求方法 get()和post(),在每次调用的时候执行request(url, "GET/POST", params)方法进行数据请求并返回Promise对象。

3. apis 创建对应功能模块的网络请求方法

引入刚刚创建的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,
  })
}

我们导出 getMusic(singer , limit = 10)方法,这样我们就创建好了一个根据歌手名字查找歌曲的get网络请求,当我们在需要使用这个网络请求的页面的时候,我们只需要引入改方法,就可以直接使用了。
我个人喜欢对不同的功能模块都创建一个js文件,api_music.js api_singer.js 这样我看到这个api文件我就可以知道他是干什么的属于哪一个功能,我修改起来效率会高很多。

4. 使用

  • 根据对应的功能,引入该功能模块需要用到的网络请求方法;
// pages/music-list/index.js
import {getMusic} from "../../apis/api_video";
Page({
    /**
     * 页面的初始数据
     */
    data: {
        musicList: null
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        getMusic("周杰伦").then(
            res => {
                this.setData({musicList:res.data.data})
            }
        ).catch(
            res => {
                console.log()
            }
        );
    },
})

在生命周期的页面加载阶段的时候,调用getMusic() 获取到需要的数据,最后进行页面渲染。

总结

这就是我在微信小程序开发中所使用的网络请求封装方法,希望可以给大家带来帮助。

到此这篇关于微信小程序网络请求模块封装实现的文章就介绍到这了,更多相关微信小程序网络请求模块封装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • addEventListener()和removeEventListener()追加事件和删除追加事件

    addEventListener()和removeEventListener()追加事件和删除追加事件

    这篇文章主要给大家介绍了关于addEventListener()和removeEventListener()追加事件和删除追加事件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • JavaScript 在各个浏览器中执行的耐性

    JavaScript 在各个浏览器中执行的耐性

    经常会遇到这样一个情况:浏览器弹出对话框,提示脚本运行时间过长,询问“停止”还是“继续”。那究竟各个浏览器是如何判断在什么时候才弹出此对话框呢?
    2009-04-04
  • js中定义一个变量并判断其是否为空的方法

    js中定义一个变量并判断其是否为空的方法

    这篇文章主要介绍了js中定义一个变量 var params=null;判断params 为/不为空的方法 ,需要的朋友可以参考下
    2014-05-05
  • 初识javascript 文档碎片

    初识javascript 文档碎片

    今天遇到一个问题: 我通过 ajax 取回另一个页面的 Html 。但这些 HTML 我不想直接输出,想通过 getElementsByName 处理后再输出相应的内容。用原生的 javascript怎样可以处理呢?
    2010-07-07
  • 分析JS单线程异步io回调的特性

    分析JS单线程异步io回调的特性

    这篇文章主要分析了javascript单线程异步io回调的特性这个问题,希望我们整理的内容能帮助到你。
    2017-12-12
  • 微信小程序中实现车牌输入功能

    微信小程序中实现车牌输入功能

    我们都知道车牌是有一定规律的,本文实现了微信小程序中实现车牌输入功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 使用JS将字符串保存成文件到本地(.txt、.json、.md)

    使用JS将字符串保存成文件到本地(.txt、.json、.md)

    工作中有时需要通过JavaScript保存文件到本地,下面这篇文章主要给大家介绍了关于使用JS将字符串保存成文件到本地的相关资料,分别包括生成.txt、.json、.md等文件,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • JavaScript搜索字符串并将搜索结果返回到字符串的方法

    JavaScript搜索字符串并将搜索结果返回到字符串的方法

    这篇文章主要介绍了JavaScript搜索字符串并将搜索结果返回到字符串的方法,涉及javascript中match方法操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • IE6下focus与blur错乱的解决方案

    IE6下focus与blur错乱的解决方案

    Miller同学发现的IE6 bug:如以下代码,点击textarea时,引发window的blur,导致focus与blur配对混乱
    2011-07-07
  • JS简单获取当前年月日星期的方法示例

    JS简单获取当前年月日星期的方法示例

    这篇文章主要介绍了JS简单获取当前年月日星期的方法,结合完整实例形式分析了javascript基于自定义函数获取当前日期时间的方法,涉及javascript中Date()类的使用与日期相关运算技巧,需要的朋友可以参考下
    2017-02-02

最新评论