微信小程序 封装请求
在写小程序的时候,每个JS文件都一大堆的请求,看得自己都眼花缭乱,下面看一下怎么对请求方法进行封装。
1,方法封装,在util文件夹下新建文件,创建request.js文件,工具文件,用于对方法封装)
request.js
var app = getApp();
//项目URL相同部分,减轻代码量,同时方便项目迁移
//调用url配置文件 文件config.js是对项目的所有url进行封装 便于管理
const CONFIG = require('../..//utils/config.js'); /** * POST请求, * URL:接口 * postData:参数,json类型 * doSuccess:成功的回调函数 * doFail:失败的回调函数 */
function request(url, postData, doSuccess, doFail) {
wx.request({ //项目的真正接口,通过字符串拼接方式实现
url: CONFIG.API_UEL.url,//后面的url并非真实接口 真正的接口要看你前端请求后端 后端提供的接口
header: {
"content-type": "application/json;charset=UTF-8"
},
data: postData,
method: 'POST',
success: function(res) { //参数值为res.data,直接将返回的数据传入
doSuccess(res.data);
},
fail: function() {
doFail();
},
})
}
//GET请求,不需传参,直接URL调用,
function getData(url, doSuccess, doFail) {
wx.request({
url: CONFIG.API_UEL.url,//后面的url并非真实接口 真正的接口要看你前端请求后端 后端提供的接口
header: {
"content-type": "application/json;charset=UTF-8"
},
method: 'GET',
success: function(res) {
doSuccess(res.data);
},
fail: function() {
doFail();
},
})
} /** * module.exports用来导出代码 * js文件中通过var call = require("../util/request.js") 加载 * 在引入引入文件的时候" "里面的内容通过../../../这种类型,小程序的编译器会自动提示,因为你可能 * 项目目录不止一级,不同的js文件对应的工具类的位置不一样 */
//对于抛出的方法较多的时候 我们可以以对象的形式抛出
module.exports = {
request:request,
getData:getData
}
上面提到了url配置文件config.js,看看是怎么封装的吧。
const BASE = 'http://xxxx.com';//服务器域名
const CONFIG = {
API_URL: {
URL: BASE, //根路径 //所有轮播图
index: BASE + '/index', //首页的轮播图
// rotation: BASE +'/rotation',//总轮播图请求 //主页请求类型
screen: BASE + '/screen', // 个人登录s
checklogin: BASE + '/checklogin',
getphone: BASE + '/getphone', //获取手机号 // 子分类接口
submenu: BASE + '/submenu', //合作接口
cooperation: BASE + '/cooperation', //教师选择类型
teachertype: BASE + '/teachertype',
edit_teacher: BASE + '/edit_teacher', //教师入驻更改 personal: BASE + '/personal',//个人中心请求
}
}
module.exports = CONFIG;
2.page里面的页面要请求的话,在JS代码中
//引入代码
var call = require("../util/request.js");
Page({
data: {
pictureList: [],
},
onLoad: function() {
var that = this; //调用封装的方法,为了方便我直接在页面加载的时候执行这个方法
call.getData('lunbo.do', this.shuffleSuc, this.fail); //this可以换成前面定义的that
//this.shuffleSuc调用成功的参数
this.loadMsgData(that);
},
shuffleSuc: function(data) {
var that = this;
that.setData({
pictureList: data.rows
})
//我后面测试了一下,直接this.setData也可以,但是因为我在没有使用封装方法的时候
//this.setData报过错,不能直接用this,所以我在赋值的时候一般都会加上var that = this;
//这句话算是一个不是习惯的习惯
},
fail: function() {
console.log("失败")
},
})
调用this.shuffleSuc方法 其实就是执行传入getData的参数doSuccess 返回数据,这样就可以减少代码冗余,
微信小程序 封装请求的更多相关文章
- 微信小程序-封装请求(GET、POST)
使用:先导入到util.js 最后在页面上导入util.js(路径自改) var util = require('../../util.js'); 使用示例GET:util.SEND(url,'GET ...
- 微信小程序封装请求接口
var rootDocment = 'https://123.com';//你的域名 function postData(url, data, cb) { wx.request({ url: root ...
- mpvue学习笔记-之微信小程序数据请求封装
简介 美团出品的mpvue已经开源出来很久了,一直说要进行一次实践,这不最近一次个人小程序开发就用上了它. 看了微信官方的数据请求模块--request,对比了下get和post请求的代码,发现如果在 ...
- 微信小程序数据请求方法wx.request小测试
微信小程序数据请求方法 wx.request wxml文件: <view> <textarea value="{{textdata}}"/> </vi ...
- 微信小程序 网络请求之re.request 和那些坑
微信小程序有四种网络请求类型,下面只详细介绍普通HTTPS请求(wx.request) 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downlo ...
- 微信小程序 -- 数据请求
微信小程序 -- 数据请求 微信小程序请求数据,并不是一个可以在url打开有数据就可以拿到数据那么简单 浏览器地址输入 可以获取参数的url 微信小程序中 代码展示 wxml <view> ...
- 微信小程序封装storage(含错误处理)
这次给你们安利的是微信小程序封装storage,先说下微信官方的 wx.getStorage({ key:"", success: function (res) { }, fail ...
- 微信小程序POST请求参数传递不到后台, 前台获取不到后端返回的数据, 以及 post 请求返回 404 但后台能收到数据
1 微信小程序POST请求参数传递不到后台 需要在微信请求 wx.request 改变默认 header 配置为如下 wx.request({ url: 'test.php', //仅为示例,并非真实 ...
- 让微信小程序每次请求的时候不改变session_id的方法
让微信小程序每次请求的时候不改变session_id的方法 每次微信小程序请求的时候都会改变session id, 还好他的请求方法内可以设置header头 所以只需要在启动程序后第一次请求服务器获得 ...
随机推荐
- 二叉搜索树的平衡--AVL树和树的旋转
二叉搜索树只有保持平衡时其查找效率才会高. 要保持二叉搜索树的平衡不是一件易事.不过还是有一些非常经典的办法可以做到,其中最好的方法就是将二叉搜索树实现为AVL树. AVL树得名于它的发明者 G.M. ...
- hadoop安装hbase
1.安装hadoop hadoop安装请参考我的centoos 安装hadoop集群 在安装hadoop的基础上新增了两台slave机器,新增后的配置为 H30(192.168.3.238) mast ...
- struts2框架学习笔记2:配置详解
核心配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC ...
- Maven 常用的远程中央仓库地址
https://repo1.maven.org/maven2/ http://maven.jahia.org/maven2/ http://maven.aliyun.com/nexus/content ...
- 内存管理cpuset,mempolicy[原理]
介绍cpuset,mbind,set_mempolicy在内存管理上的应用 change log :确定先从mempolicy的man 手册翻译开始研究,计划如下 .先从man手册入手,通过实现mem ...
- 机器学习(Machine Learning)算法总结-决策树
一.机器学习基本概念总结 分类(classification):目标标记为类别型的数据(离散型数据)回归(regression):目标标记为连续型数据 有监督学习(supervised learnin ...
- Golang Struct 声明和使用
Golang Struct 声明和使用 Go可以声明自定义的数据类型,组合一个或多个类型,可以包含内置类型和用户自定义的类型,可以像内置类型一样使用struct类型 Struct 声明 具体的语法 t ...
- 【BJOI2019】删数 线段树
题目大意:一个数列若能在有限次数内删空,则称这个数列可以删空,一次删除操作定义如下: 记当前数列长度为$k$,则删掉数列中所有等于$k$的数. 现在有一个长度为$n$的数列$a$,有$m$次修改操作, ...
- Jmeter参数化的方法
测试接口时,使用Jmeter在请求中输入参数,若是有多种情况,有多条测试参数,是不是要每个情况逐条输入呢?逐条输入会让人觉得比较麻烦,因此,就有了Jmeter参数化. Jmeter参数化的方法: 用户 ...
- 30 个java编程技巧
1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 ”if else” 判断null元素. Java 的 ...