简单封装微信小程序
一、不同环境配置封装
新建config文件夹,根据自己有不同环境设置不同的js文件

具体js文件内容:
exports.config = {
requestHost: 'https://******.com.cn',
APPID:'*******',
Business: {
'jiaxiao': '1'
}
}
新建api.js文件(放哪里根据自己喜好),用json形式来储存接口地址:
exports.api = {
'do' : {
'login': '/merchant/do/login',
},
'payment' : {
'pay': '/V2/TokenPay/pay',
}
}
配置完成后在app.js中就可以调用了,
//app.js
App({
onLaunch: function (options) {
let env = options.query.env ? options.query.env : "product";
var config = require("config/config." + env + ".js");
this.globalData = config.config;
//获取接口信息
var api = require('api.js');
},
})
在页面中调用接口时只要引入先引入
const app = getApp();
const setToken = token => {
return wx.setStorageSync('token', token);
}
const getToken = () =>{
return wx.getStorageSync('token');
}
const judge = () =>{
var host = app.globalData.requestHost;
// console.log(host + app.api.do.token)
wx.request({
url: host + app.api.do.token,
data: {
token: getToken() ? getToken(): ''
},
header: {
'content-type': 'application/json' // 默认值
},
success: function (res) {
if (res.data.ret_code != 200) {
wx.navigateTo({
url: "/pages/login/index"
})
}
},
fail: function (error) {
wx.navigateTo({
url: "/pages/login/index"
})
}
})
//设置title
wx.setNavigationBarTitle({
title: wx.getStorageSync('merchantName') ? wx.getStorageSync('merchantName') : ''
})
}
const get = (url, data, callback) => {
//判断是否登录、token是否过期
var host = app.globalData.requestHost;
judge();
if(data == false){
var data = {
token: wx.getStorageSync('token'),
business: app.globalData.Business.jiaxiao
}
}else{
data.token = wx.getStorageSync('token');
data.business = app.globalData.Business.jiaxiao;
}
wx.request({
url: host+url,
data: data,
header: {
'content-type': 'application/json'
},
success: res => {
callback(res);
},
})
}
const post = (url, data, callback) => {
//判断是否登录、token是否过期
var host = app.globalData.requestHost;
judge();
//设置title
// console.log(wx.getStorageSync('token'))
wx.setNavigationBarTitle({
title: wx.getStorageSync('merchantName') ? wx.getStorageSync('merchantName') : ''
})
if (data == false) {
var data = {
token: wx.getStorageSync('token'),
business: app.globalData.Business.jiaxiao
}
} else {
data.token = wx.getStorageSync('token');
}
// console.log(method)
wx.request({
url: host + url,
method: 'POST',
data: data,
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: res => {
callback(res);
},
})
}
module.exports = {
setToken: setToken,
getToken: getToken,
judge: judge,
get: get,
post: post
}
因为小程序接口都是对外的开放接口,所以会存在安全性问题,为了接口安全每次都要传一个‘token’来校验请求的安全性,上边封装的意义也在此处,不用每次都传递token了,调用也很简单:
//页面引入
var request = require('../../utils/request.js'); request.get(
app.api.pay.pay,
false, function (res) {
console.log(res)
});
//request.get(接口地址,是否有参数,结果回调)
简单封装微信小程序的更多相关文章
- 详解封装微信小程序组件及小程序坑(附带解决方案)
一.序 上一篇介绍了如何从零开发微信小程序,博客园审核变智障了,每次代码都不算篇幅,好好滴一篇原创,不到3分钟从首页移出来了.这篇介绍一下组件封装和我的踩坑历程. 二.封装微信小程序可复用组件 首先模 ...
- [组件封装]微信小程序-图片批量上传照片墙
描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...
- 【原创】1、简单理解微信小程序
先看下网站的运行方式: 而小程序是这样: what?就这样?是的,就这样.那小程序官方提供的Wafer,还有Wafer2...想太多了,抛弃它们吧.不应当为了解决一个简单的旧问题而去整一个复杂的新问题 ...
- 封装微信小程序支付
<?php /** * User: Eden * Date: 2019/3/21 * 共有内容 */ namespace Common\Service; use Think\Exception; ...
- 使用 async await 封装微信小程序HTTP请求
1. 编写将普通回调函数形式的方法转换为promise方法的promisic方法 // util.js const promisic = function (func) { return functi ...
- promise封装微信小程序的request
1.在utils下创建一个 request.js文件,然后将方法导出 const app = getApp(); //使用promise封装request请求 const POST = (url, p ...
- [组件封装]微信小程序-底部弹框
描述 模仿ios浏览器底部弹框效果. 遮罩层淡入淡出,弹框高度根据内容自适应. 效果 源码 popup-bottom.wxml <!-- popup-bottom.wxml --> < ...
- [组件封装]微信小程序-日历
描述 切换月份, 当天文案为今天, 日期背景变色, 日期红点标识, 点击选中日期. 效果 源码 calendar.wxml <view class="component"&g ...
- 详解微信小程序开发(项目从零开始)
一.序 微信小程序,估计大家都不陌生,现在应用场景特别多.今天就系统的介绍一下小程序开发.注意,这里只从项目代码上做解析,不涉及小程序如何申请.打包.发布的东西.(这些跟着微信官方文档的流程走就好). ...
随机推荐
- 高性能内存池NedAlloc
http://www.nedprod.com/programs/portable/nedmalloc/ http://blog.sina.com.cn/s/blog_6f5b220601012x4t. ...
- Unity -- 入门教程二
为了接下来要做的小游戏,在这里我要小小的修改一下移动的代码. public class PlayerMove : MonoBehaviour { //定义移动的速度 public float Move ...
- iOS -- 开源项目和库
TimLiu-iOS 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD与Toast 对话框 其他UI 动画 侧滑与右滑返回手势 gif动画 ...
- 4.【nuxt起步】-具体练习一个h5实例
目标地址:https://www.vyuan8.com/vyuan/plugin.php?id=vyuan_fangchan&module=fangchan&pid=10079& ...
- vue Syntax Error: Unexpected token {
> music@1.0.0 dev F:\music\music> node build/dev-server.js > Starting dev server...ERROR Fa ...
- Git 常用场景操作
git init 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹. git clone 获取一个u ...
- pycharm pull到github
1.setting中找到github 正确输入邮箱密码,勾上ssh 2.在本机中git bash 得到ssh代码 输入到github 个人setting中 3.在pycharm中setting项git ...
- centos7+ 安装Docker 17.03.2
cnetos7 安装 docker17.03.2 升级内核 http://m.blog.csdn.net/article/details?id=52047780 注意切换内核时查看 新内核位置 awk ...
- 怎样制作gif图片?怎样制作你项目的动态效果图到你的csdn?
怎样制作gif图?怎样上传你项目的动态效果图到你的csdn? 这仅仅是笔者用的方法.有其它方法的欢迎分享. 一张或几张展示了你的项目的功能及效果的动态图放在博客文章开头会为你的文章润色不少. 相信非常 ...
- 验证loadrunner对Ajax内容的校验
前一阵和开发的同事一起測试某个系统的性能.此系统是发送Ajax请求到后台,再调用第三方的某项服务. 第三方服务的性能由不得我们控制.因此开发者做了一下改进.超时则直接返回. 于是在loadrunner ...