小程序封装request请求,统一API
程序开发中都会调用后端工程师开发的API,小程序的开发文档提供了相对实用的APIwx.request(),但是在开发的过程中,又遇到了一些问题,在小程序的项目开发时,调用的API不止一个,同一个API调用不止一次。同时,对于调用的API的管理也十分复杂,这样的背景下,对wx.request()方法的封装变得尤为重要。
本文的解决思路为:将API的路径和方法放在一个文件里面方便管理;封装小程序的request方法,并返回promise处理(ES6)。
一、units文件夹中新建request.js文件
- // utils/request.js
- //封装request
- let apiRequest = (url, method, data, header) => { //接收所需要的参数,如果不够还可以自己自定义参数
- let promise = new Promise(function (resolve, reject) {
- wx.showNavigationBarLoading() //在标题栏中显示加载
- wx.request({
- url: url,
- data: data ? data : null,
- method: method,
- header: header ? header : { 'content-type': 'application/x-www-form-urlencoded' },
- complete: function () {
- wx.hideNavigationBarLoading(); //完成停止加载
- wx.stopPullDownRefresh(); //停止下拉刷新
- },
- success: function (res) {
- //接口调用成功
- resolve(res.data); //根据业务需要resolve接口返回的json的数据
- },
- fail: function (res) {
- wx.showModal({
- showCancel: false,
- confirmColor: '#1d8f59',
- content: '数据加载失败,请检查您的网络,点击确定重新加载数据!',
- success: function (res) {
- if (res.confirm) {
- apiRequest(url, method, data, header);
- }
- }
- });
- wx.hideLoading();
- }
- })
- });
- return promise; //注意,这里返回的是promise对象
- }
- export default apiRequest;
二、units文件夹中新建api.js文件
- import apiRequest from './request.js';
- const HOST = 'http://www.mingmingym.com';
- const API_LIST = {
- all: {
- method: 'POST',
- url: '/e/extend/api/type.php'
- },
- }
- /*
- 多参数合并
- */
- function MyHttp(defaultParams, API_LIST) {
- let _build_url = HOST;
- let resource = {};
- for (let actionName in API_LIST) {
- let _config = API_LIST[actionName];
- resource[actionName] = (pdata) => {
- let _params_data = pdata;
- return apiRequest(_build_url + _config.url, _config.method, _params_data, {
- 'content-type': 'application/x-www-form-urlencoded;charset=utf-8;Authorization;'
- });
- }
- }
- return resource;
- }
- const Api = new MyHttp({}, API_LIST);
- export default Api;
三、业务中使用
- import Api from '/../../utils/api.js';
- .
- .
- .
- getAll() {
- Api.all({ id: 1 }).then(res => {
- console.log(res);
- })
- }
通过对小程序网络请求方法的二次封装,使得我们的代码看上去更加的简洁,在接口的管理上也相对的便利,比如在后端修改API的路径和方法时,只需要在api.js文件中修改相应的API即可,也免去了修改时忽略了更多调用的麻烦。同时,也提高了代码的复用性,一劳永逸。
————————————————
原文链接:https://blog.csdn.net/mingcodes/article/details/103582581
小程序封装request请求,统一API的更多相关文章
- 小程序封装request请求
//request.js var host = 'https://www.xxx.com';//请求域名 module.exports = function (type, params, method ...
- 监控微信小程序wx.request请求失败
在微信小程序里,与后台服务器交互的主要接口函数是wx.request(),用于发起 HTTPS 网络请求.其重要性不言而喻.然而,却经常遇到请求失败的问题,笔者特意谷歌"wx.request ...
- 关于微信小程序的Request请求错误处理
在学微信小程序的request请求的时候,一开始报“不在以下合法域名列表中,请参考文”的错误,后来又莫名其妙的报“400 Bad Request”错误,经过半天的研究,终于搞定了,把遇到的错误给大家分 ...
- 微信小程序wx.request请求用POST后台得不到传递数据
微信小程序的wx.request请求,method设为POST并向后台传递数据,但从后台返回的信息来看后台并没有获得传递的数据 wx.request({ url: 'url' ...
- 微信小程序- wx.request请求不到数据
小程序官方文档手册 https://mp.weixin.qq.com/debug/wxadoc/dev/ 小程序开发问答社区 http://www.henkuai.com/forum.php wx.r ...
- 微信小程序wx.request请求服务器json数据并渲染到页面
[原文出自]: https://blog.csdn.net/weixin_39927850/article/details/79766259 微信小程序的数据总不能写死吧,肯定是要结合数据库来做数据更 ...
- 小程序发送 request请求失败 提示不在合法域名列表中的解决方法
可以在小程序开发工具中设置不校验域名.
- 微信小程序测试request请求webapi
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Ne ...
- 小程序 wx.request请求
1.wx.request相当于发送ajax请求 微信官方解释 参数 属性 类型 默认值 必填 说明 url string 是 开发者服务器接口地址 data string/object/ArrayBu ...
随机推荐
- 是时候考虑让你的Spark跑在K8S上了
[摘要] Spark社区在2.3版本开始,已经可以很好的支持跑着Kubernetes上了.这样对于统一资源池,提高整体资源利用率,降低运维成本(特别是技术栈归一)有着非常大的帮助.这些趋势是一个大数据 ...
- luogu P1379 八数码难题
题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了 ...
- “Unknown class XXViewController in Interface Builder file.”问题处理
在静态库中写了一个XXViewController类,然后在主工程的xib中,将xib的类指定为XXViewController,程序运行时,报了如下错误: “Unknown class XXView ...
- python 金融应用(四)金融时间序列分析基础
1.1.创建DataFrame df=pd.DataFrame(list(range(10,50,10)),columns=['num'],index=['a','b','c','d']) df Ou ...
- FlyWay工作原理
本文译自Flyway官方文档,原文地址https://flywaydb.org/getstarted/how 当你最开始将FlyWay指向一个空数据库时. 它会试着去查找schema历史表,如果此时数 ...
- Java_零碎知识回顾
封装的理解 1.隐藏实现细节,控制对象的访问权限:对外提供公共方法: 隐藏:private 本类可见 继承的理解 ①父类有共性的属性与方法:子类只需要继承,扩展自己独有的属性方法即可,实现了代码的可复 ...
- JS基础-正则
正则表达式 创建正则表达式 使用一个正则表达式字面量 const regex = /^[a-zA-Z]+[0-9]*\W?_$/gi; 调用RegExp对象的构造函数 const regex = ne ...
- HTML真零基础教程
这是为完全没有接触过的童鞋写的,属于真正的傻瓜式教程,当然由于本人也不是什么大佬,可能有些知识的理解与自己想的不一样,如果有大佬看到,还请帮我指出.以下主要是HTML5的基础标签的使用. 开发前的准备 ...
- java项目测试环境搭建
java项目测试环境搭建 2019-03-06 13:45:26 木瓜小少年 阅读数 691更多 分类专栏: 测试 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原 ...
- NodeJS3-3基础API----event(事件触发器)
1.基础(on) // 如果像对象享有事件能力就要集成EventEmitter const EventEmitter = require('events') //集成EventEmitter类 cla ...