微信小程序网络封装-简单高效

废话引言

小程序虽然出世很久了,但一直没怎么接触到小程序开发。吉他兴趣班老师想弄一个小程序发布课程信息和打卡功能,作为IT一员就自愿加入了这个小程序开发小组中。虽然小程序面向的是前端工程师,但作为移动端程序猿感觉甚是友好,加上有点前端基础就更是觉得入手很easy啦。

微信小程序的网络请求很便捷,直接调用就可以了。但最好还是根据需求,处理一些参数回调信息,进行二次封装,为整个小程序应用直接提供调方法接口岂不是更好?

利用网络请求的一贯思维,分三个回调:onStart:开始请求, onSuccess:请求成功回调, onFailed:请求失败回调, 意思就是字面意思~

netUtil.js 网络请求工具封装

在utils目录下创建一个netUtil.js文件


/**
 * 供外部post请求调用
 */
function post(url, params, onStart, onSuccess, onFailed) {
  request(url, params, "POST", onStart, onSuccess, onFailed);
}

/**
 * 供外部get请求调用
 */
function get(url, params, onStart, onSuccess, onFailed) {
  request(url, params, "GET", onStart, onSuccess, onFailed);
}

/**
 * function: 封装网络请求
 * @url URL地址
 * @params 请求参数
 * @method 请求方式:GET/POST
 * @onStart 开始请求,初始加载loading等处理
 * @onSuccess 成功回调
 * @onFailed  失败回调
 */
function request(url, params, method, onStart, onSuccess, onFailed) {
  onStart(); //request start
  wx.request({
    url: url,
    data: dealParams(params),
    method: method,
    header: { 'content-type': 'application/json' },
    success: function (res) {
      if (res.data) {
        /** start 根据需求 接口的返回状态码进行处理 */
        if (res.data.error_code == 0) {
          onSuccess(res.data); //request success
        } else {
          onFailed(res.data.msg); //request failed
        }
        /** end 处理结束*/
      }
    },

    fail: function (error) {
      onFailed(""); //failure for other reasons
    }
  })
}

/**
 * function: 根据需求处理请求参数:添加固定参数配置等
 * @params 请求参数
 */
function dealParams(params) {
  return params;
}

module.exports = {
  postRequest: post,
  getRequest: get,
}

小案例使用说明:笑话大全接口

简要描述:

  • 用户注册接口

请求URL:

  • http://v.juhe.cn/joke/content/list.php

请求方式:

  • GET

参数:

参数名 必选 类型 说明
sort string 降序“des”,升序“asc”
page int 页数,默认1
pageSize string 默认每页加载20条数据
time string 时间戳10位
key string appkey

返回示例

  {
    "error_code": 0,
    "reason": "Success",
    "result": {
        "data": [
            {
                "content": "某先生是地方上的要人。一天,他像往常一样在书房里例览当日报纸,突然对妻子大声喊道:喂,安娜,你看到今天早报上的流言蜚语了吗?真可笑!他们说,你收拾行装出走了。你听见了吗?安娜、你在哪儿?安娜?啊!",
                "hashId": "90B182FC7F74865B40B1E5807CFEBF41",
                "unixtime": 1418745227,
                "updatetime": "2014-12-16 23:53:47"
            },
            {
                "content": "有一天我看着报纸,小声嘟囔着一篇文章的题目鸟儿也有外语,丈夫听了对了一句:鸟儿当然也有‘外遇’。原来丈夫听错了,我笑得前仰后合。",
                "hashId": "206F5C52FD2ED94772CBC66C8AC61F2A",
                "unixtime": 1418745227,
                "updatetime": "2014-12-16 23:53:47"
            }
        ]
    }
}

小程序页面js文件中引入netUtil

var netUtil = require("../../utils/network.js"); //require引入
Page({
  data: {
    jokeList: {}
  },

  onLoad: function (options) {
    var url = "http://v.juhe.cn/joke/content/list.php";
    var params = {
      sort: "",
      page: 1,
      pagesize: 5,
      time: "1418816972",
      key: "746dfdb4cd8445d30a8f915fd2b5f76b",
    }

    netUtil.getRequest(url, params, this.onStart, this.onSuccess, this.onFailed); //调用get方法情就是户数
  },

  onStart: function () { //onStart回调
    wx.showLoading({
      title: '正在加载',
    })
  },
  onSuccess: function (res) { //onSuccess回调
    wx.hideLoading();
    this.setData({
      jokeList: res.result.data //请求结果数据
    })
  },
  onFailed: function (msg) { //onFailed回调
    wx.hideLoading();
    if (msg) {
      wx.showToast({
        title: msg,
      })
    }
  },
})

在wxml文件中绑定请求的笑话大全列表:jokeList

<view>
   <block wx:for="{{jokeList}}" wx:for-item="item" wx:key="idx">
    <view class='joke_container'>
      <text>{{item.content}}</text>
    </view>
 </block>
</view>

原文地址:https://www.cnblogs.com/denluoyia/p/9428570.html

时间: 2024-10-09 20:42:38

微信小程序网络封装-简单高效的相关文章

微信小程序 网络请求之re.request 和那些坑

微信小程序有四种网络请求类型,下面只详细介绍普通HTTPS请求(wx.request) 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downloadFile) WebSocket通信(wx.connectSocket) 首先,先确认是否设置了合法域名,或者在开发环境下不校验合法域名.关于设置合法域名请看→微信小程序 网络请求之设置合法域名   以下是wx.request的详细说明,截图于微信小程序开发文档 在微信index.js 发起一个普

第三篇、微信小程序-网络请求API

wx.request(OBJECT)发起的是https请求.一个微信小程序,同时只能有5个网络请求连接. OBJECT参数说明: 效果图: net.js Page({ data:{ result:{}, }, onLoad:function(options){ this.getDate('http://baobab.wandoujia.com/api/v2/feed?num=2'); }, /** * 网络请求的函数:接收一个URL参数 */ getDate:function(URL){ var

微信小程序_(视图)简单的swiper容器

swiper容器效果 官方文档:传送门 swiper容器可实现简单的轮播图效果 结构程序 Page({ /** * 页面的初始数据 */ data: { }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函

微信小程序之封装http请求

下面将封装http请求服务部分的服务以及引用部分 // 本服务用于封装请求 // 返回的是一个promisepromise var sendRrquest = function (url, method, data, header) { var promise = new Promise(function (resolve, reject) { wx.request({ url: url, data: data, method: method, header: header, success:

微信小程序网络请求

配置服务器域名: 每个微信小程序需要事先设置一个通讯域名,小程序只可以跟指定的域名进行网络通信. 服务器域名在:小程序后台=> 开发=> 开发设置 =>  服务器域名中配置,配置时需注意: 1.域名只支持https(request, uploadFile,downloadFile)和wss(connectSocket)协议. 2.域名不能使用ip地址或localhost. 3.域名必须经过ICP备案. 4.服务器域名一个月内可申请5次修改. 发起get请求: 调用wx.request(o

微信小程序,封装同步请求

封装统一请求的目的:在请求时有时会返回不同的返回码进行不同的数据处理,比如:返回正常时,进行正常操作,如果返回了异常,那么就需要进行不同的处理了,由于每次请求都可能出现各种返回码,所以进行请求封装,进行统一异常处理. 在小程序中提供的请求: wx.request({ url: url, data: params, method: 'POST', header: {                'content-type': 'application/x-www-form-urlencoded'

微信小程序开发之简单的授权登录

<view class="container"> <view class='content'> <view>申请获取以下权限</view> <text>获得你的公开信息(昵称,头像等)</text> </view> <button class='bottom' wx:if="{{canIUse}}" open-type="getUserInfo" bindg

微信小程序_(案例)简单中国天气网首页

Demo:简单中国天气网首页 Page({ data:{ name:"CynicalGary", temp:"4", low:"-1°C", high:"10°C", type:"晴", city:"泉州", week:"星期五", weather:"无持续风行 微风级" } }) index.js <view class='content'

微信小程序class封装http

config.js var config = { base_api_url:"https://douban.uieee.com/v2/" } export {config} utils/http.js import {config} from "../config"; class HTTP{ request(params) { if (!params.method) { params.method = "GET" } wx.request({ u