• 简单封装微信小程序


    一、不同环境配置封装

    新建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(接口地址,是否有参数,结果回调)
  • 相关阅读:
    octotree神器 For Github and GitLab 火狐插件
    实用篇如何使用github(本地、远程)满足基本需求
    PPA(Personal Package Archives)简介、兴起、使用
    Sourse Insight使用过程中的常使用功能简介
    Sourse Insight使用教程及常见的问题解决办法
    github 遇到Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts问题解决
    二叉查找树的C语言实现(一)
    初识内核链表
    container_of 和 offsetof 宏详解
    用双向链表实现一个栈
  • 原文地址:https://www.cnblogs.com/liucaodan/p/10682476.html
Copyright © 2020-2023  润新知