一、不同环境配置封装

新建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();
就可以通过变量来获取接口地址了。
 
封装微信小程序get post方法:
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(接口地址,是否有参数,结果回调)

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

  1. 详解封装微信小程序组件及小程序坑(附带解决方案)

    一.序 上一篇介绍了如何从零开发微信小程序,博客园审核变智障了,每次代码都不算篇幅,好好滴一篇原创,不到3分钟从首页移出来了.这篇介绍一下组件封装和我的踩坑历程. 二.封装微信小程序可复用组件 首先模 ...

  2. [组件封装]微信小程序-图片批量上传照片墙

    描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...

  3. 【原创】1、简单理解微信小程序

    先看下网站的运行方式: 而小程序是这样: what?就这样?是的,就这样.那小程序官方提供的Wafer,还有Wafer2...想太多了,抛弃它们吧.不应当为了解决一个简单的旧问题而去整一个复杂的新问题 ...

  4. 封装微信小程序支付

    <?php /** * User: Eden * Date: 2019/3/21 * 共有内容 */ namespace Common\Service; use Think\Exception; ...

  5. 使用 async await 封装微信小程序HTTP请求

    1. 编写将普通回调函数形式的方法转换为promise方法的promisic方法 // util.js const promisic = function (func) { return functi ...

  6. promise封装微信小程序的request

    1.在utils下创建一个 request.js文件,然后将方法导出 const app = getApp(); //使用promise封装request请求 const POST = (url, p ...

  7. [组件封装]微信小程序-底部弹框

    描述 模仿ios浏览器底部弹框效果. 遮罩层淡入淡出,弹框高度根据内容自适应. 效果 源码 popup-bottom.wxml <!-- popup-bottom.wxml --> < ...

  8. [组件封装]微信小程序-日历

    描述 切换月份, 当天文案为今天, 日期背景变色, 日期红点标识, 点击选中日期. 效果 源码 calendar.wxml <view class="component"&g ...

  9. 详解微信小程序开发(项目从零开始)

    一.序 微信小程序,估计大家都不陌生,现在应用场景特别多.今天就系统的介绍一下小程序开发.注意,这里只从项目代码上做解析,不涉及小程序如何申请.打包.发布的东西.(这些跟着微信官方文档的流程走就好). ...

随机推荐

  1. PageHelper分页工具

    <a>共${page.total}件商品</a>    <a>共${page.pages}页</a>    <a>当前第${page.pag ...

  2. Maven插件maven-antrun-plugin的使用

    以下引用官方的介绍http://maven.apache.org/plugins/maven-antrun-plugin/: 一.什么是maven-antrun-plugin? 该插件提供从Maven ...

  3. -[__NSCFString longValue]: unrecognized selector sent to instance

    You can use NSString methods intValue longLongValue. 这个使用longvalue会crash报上面的错误

  4. 【ActiveMQ】2.spring Boot下使用ActiveMQ

    在spring boot下使用ActiveMQ,需要一下几个条件 1.安装并启动了ActiveMQ,参考:http://www.cnblogs.com/sxdcgaq8080/p/7919489.ht ...

  5. android的窗口机制分析------UI管理系统

    Activity可以看做是整个Android系统的人机接口,它提供了一个窗口来绘制UI,每个Activity在启动时,我们都需要给它设置一个Content view,作为Activity所呈现的UI内 ...

  6. 设计模式之状态模式(State)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  7. 智能手机+DIY红外=万能遥控器

    目前好像只有:三星S4.,努比亚大牛,华为荣耀3等几款新机才有红外遥控功能,那我们使用的手机没有这个功能怎么办?不要急我有办法呵呵,本次DIY材料好找又简单,大家都可以亲自试一试! DIY材料:红外二 ...

  8. [c++菜鸟]《Accelerate C++》读书笔记

    第0章 开始学习C++ 1.<<的行为取决于它的操作数类型,<<会把它的右操作数的字符写到左操作数所指示的流中,他是结果就是它的左操作数. 2.std::endl是一个控制器, ...

  9. kubernetes调度之污点(taint)和容忍(toleration)

    系列目录 节点亲和性(affinity),是节点的一种属性,让符合条件的pod亲附于它(倾向于或者硬性要求).污点是一种相反的行为,它会使pod抗拒此节点(即pod调度的时候不被调度到此节点) 污点和 ...

  10. 转_Greenplum 数据库安装部署(生产环境)

    Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...