前言

之前写小程序,每次请求后台时都直接调用原生的API,wx.request,每次都要写url,data,回调函数等,正好前段时间,小程序项目需要添加新内容,趁此机会,做一个封装的请求工具,比较简单。

本文若有出入,请指正——来自小渣渣的颤抖

客官可移步小站看本文http://fanjiajia.cn/2019/07/06/wxxcx/flx1/

原生的API

首先看看原生的api,wx.request需要写如下东西:

wx.request({
url: '', // url地址
// 参数
data:{ },
method:'', // post || get
success: res=> {
// 请求成功回调函数,res为回调参数 },
fail:res=> {
// 请求失败回调函数,res为回调参数
}
})

每次网络请求都需要写这些内容,其实在实际项目中,大多情况下url都是由基地址+请求模块构成,比如https://woshigecainiao.com/myservice/login, 这里基地址为:https://woshigecainiao.com/myservice/, 模块为/login。 基地址一般都不会变,method通常也是约定好的,一律post或者get等,fail回调一般都会统一处理,所以不同的是参数data,和请求成功后的处理。

实现

在util目录下新建NetAPI.js
const config = require ("../config.js") // 域名配置等
const request = (url, data, showLoading) => {
let _url = config.baseurl + url;
return new Promise((resolve, reject)=> {
// 由调用者控制是否需要显示加载对话框
if (showLoading){
wx.showLoading({
title: '加载中',
mask: true
})
}
wx.request({
url: _url,
method: 'post',
data: data,
success(res) {
// console.error(res)
wx.hideLoading();
resolve(res.data)
},
fail(err) {
console.error('网络请求失败',err)
wx.hideLoading();
wx.showModal({
title: '提示',
content: '网络请求失败',
showCancel: false
})
}
})
})
}
module.exports = {
// 此处调用可直接使用NetAPI.VehicleResManager(data).then(...),第二个参数showLoading采用缺省,即默认使用加载,调用给false,即可屏蔽默认的加载框,js不支持方法重载,也是没办法
VehicleResManager: (data, showLoading) => {
return request(config.CLYYQuery, data, showLoading == undefined ? true : showLoading)
}
}

这里我导入了config.js文件,其中配置了后台服务器的ip和后台请求基地址和请求模块地址等,这样便于统一管理,只需要在config中配置,NetAPI中调用即可,NetAPI中不关心具体的url。

const request = (url, data, showLoading) => {...}
  • url:后台不同模块的入口,比如login等这样的模块
  • data:请求所需要的参数data
  • showLoading:发起网络请求是否需要显示加载对话框的控制开关

    以我这里的例子为例,我最后暴露除了VehicleResManager,即车辆预约管理模块,所对应了后台模块地址卸载config中config.CLYYQuery,这样,在page的js中只需要简单的调用暴露的相关入口即可。
调用

在某个page中首先导入该工具

const NetAPI = require('../../utils/NetAPI.js')

调用处:

NetAPI.VehicleResManager(data, that.data.curPage == 0).then(res => {...}

res即为请求返回数据,不包含网络状态等,因为在工具中resolve(res.data)中直接返回的是返回体的data部分。

这里关于Promise就不说了

最后

此致,敬礼

微信小程序wx.request的简单封装的更多相关文章

  1. 监控微信小程序wx.request请求失败

    在微信小程序里,与后台服务器交互的主要接口函数是wx.request(),用于发起 HTTPS 网络请求.其重要性不言而喻.然而,却经常遇到请求失败的问题,笔者特意谷歌"wx.request ...

  2. 微信小程序wx.request接口

    微信小程序wx.request接口 wx.request是小程序客户端与服务器端交互的接口 HTTPS 请求 一个微信小程序,只能同时(同时不能大于5个)有5个网络请求 wx.request(OBJE ...

  3. 微信小程序wx.request请求服务器json数据并渲染到页面

    [原文出自]: https://blog.csdn.net/weixin_39927850/article/details/79766259 微信小程序的数据总不能写死吧,肯定是要结合数据库来做数据更 ...

  4. 微信小程序wx.request请求用POST后台得不到传递数据

    微信小程序的wx.request请求,method设为POST并向后台传递数据,但从后台返回的信息来看后台并没有获得传递的数据 wx.request({              url: 'url' ...

  5. 坑:微信小程序wx.request和wx.uploadFile中传参数的区别

    微信小程序中通过组件<form>提交表单的时候,在js中通过e.detail.value得到所提交表单的json格式数据.一般提交表单我们都是通过wx.request请求,提交表单数据,通 ...

  6. 微信小程序 wx.request

    onLoad: function () { var that = this console.log('https://free-api.heweather.com/s6/weather?locatio ...

  7. 微信小程序- wx.request请求不到数据

    小程序官方文档手册 https://mp.weixin.qq.com/debug/wxadoc/dev/ 小程序开发问答社区 http://www.henkuai.com/forum.php wx.r ...

  8. 微信小程序wx.request POST获取不到数据解决办法

    get //发起请求     wx.request({       url: 'http://www.xiaochengxu.com/home/index/curd', //仅为示例,并非真实的接口地 ...

  9. 微信小程序 wx.request POST请求------中文乱码问题

    问题: 一个简单的表单,提交后台返回数据“提交成功”. 以为没问题了,但是没过多久后台小哥就问为啥那么多乱码,找了很久原因,发现在提交的时候就已经乱码了. 嗯,前端问题,然后测试GET/POST方法. ...

随机推荐

  1. python渗透库大集合

    l Scapy:一款强大的交互式数据报分析工具,可用作发送.嗅探.解析和伪造网络数据包. l pypcap.Pcapy和pylibpcap:配合libpcap一起使用的数据包捕获模块 l libdne ...

  2. Android笔记(二十九) Android中的异步更新(一) Android中的线程

    Java中的线程 1. 线程的两种实现方式 ①继承Thread类 ②实现Runnable接口 两者区别在于,Thread这个类的对象,代表的是一个线程,而Runnable的对象,代表的是线程体(也就是 ...

  3. SUSE Ceph Cephfs - Storage6

    (1)Policy 配置文件,添加MDS角色定义 # vim /srv/pillar/ceph/proposals/policy.cfg # MDS role-mds/cluster/mds*.sls ...

  4. Visual Studio(Year)编辑器调试在IIS发布的Web程序出现错误的解决

    如下图所示:

  5. RT-Thread--内存管理

    内存管理的功能特点 RT-Thread 操作系统在内存管理上,根据上层应用及系统资源的不同,有针对性地提供了不同的内存分配管理算法.总体上可分为两类:内存堆管理与内存池管理,而内存堆管理又根据具体内存 ...

  6. Python + Selenium 主要实现的功能

    selenium 技术 元素定位的几种方法 WebDriver API ,selenium IDE,selenium grid python 技术 函数.类.方法: 读写文件, unitest单元测试 ...

  7. 全干货!百度AI快车道艾尼专场成都站开启报名

    成都市自年初出台<成都市加快人工智能产业发展推进方案(2019-2022年)>以来,便积极推动相关企业落地.强化人才培养并推进人工智能与传统行业融合应用,在AI赛道上不断"加速& ...

  8. python访问aws-S3服务

    创建本地 AWS 凭证文件 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/. 创建一个新用户,其权限仅限于您希望您的代 ...

  9. queue模块笔记

    queue被称为消息队列,数据不会混乱,也可以用于复杂业务传递元素,队列是多线程的利器,其内部有锁的机制可以控制数据的统一且安全 queue.Queue()按照先进先出原则 queue.LifoQue ...

  10. pandas 3

    参考资料:https://mp.weixin.qq.com/s/9z3JVBkZpasC_F0ar_7JJA 删除多列:df.drop(col_names_list, axis=1, inplace= ...