微信小程序HTTP请求封装

最近做的事情有些许的乱,一会儿Android,一会儿Ionic,一会又微信小程序。现在又要搞一个微信小程序,需要用到HTTP请求,好吧,其实只要不是单机小游戏,都会用到HTTP请求,微信小程序官方提供了HTTP请求的方法,其实封装的很好了,直接用就行,但是还是在封装一次吧,好维护一点。

HTTP请求封装

首先在page文件夹下创建一个js文件夹存放封装的http请求,其实放哪里看自己需要,都行。

在js文件夹下创建一个http.js文件,里面是封装好的http请求代码,其实叫啥名都行,看你心情。

里面封装的代码是这个样子的:

/**
 * TODO http请求封装
 * 王佳伟
 * 2020年3月19日13:43:48
 */

// 配置文件
const config = require('./config.js')
var app = getApp();
const host = config.httpServer; // 服务器baseUrl

/**
 * POST请求,
 * URL:接口
 * postData:参数,json类型
 * doSuccess:成功的回调函数
 * doFail:失败的回调函数
 */
function postData(url, postData, doSuccess, doFail) {
  wx.request({
    //项目的真正接口,通过字符串拼接方式实现
    url: host + url,
    // 这个header根据你的实际改!
    header: {
      'Content-Type': 'application/json',
      'cookie': config.httpToken,
      'Request-Origin': 'app'
    },
    data: postData,
    method: 'POST',
    success: function (res) {
      //参数值为res.data,直接将返回的数据传入
      if (res.data.result.token) { // 如果有token保存下来,下次请求带着token访问
        config.httpToken = res.data.result.token;
        console.log("token--> ", config.httpToken)
      }
      doSuccess(res.data);
    },
    fail: function () {
      doFail();
    },
  })
}

/**
 * GET请求,
 * URL:接口
 * getData:参数,json类型
 * doSuccess:成功的回调函数
 * doFail:失败的回调函数
 */
function getData(url, getData, doSuccess, doFail) {
  wx.request({
    url: host + url,
    header: {
      'Content-Type': 'application/json',
      'X-Access-Token': config.httpToken,
      'Request-Origin': 'app'
    },
    method: 'GET',
    data: getData,
    success: function (res) {
      doSuccess(res.data);
    },
    fail: function () {
      doFail();
    },
  })
}

/**
 * module.exports用来导出代码
 * js文件中通过var http = require("../util/request.js")  加载
 * 在引入引入文件的时候"  "里面的内容通过../../../这种类型,小程序的编译器会自动提示,因为你可能
 * 项目目录不止一级,不同的js文件对应的工具类的位置不一样
 */
module.exports.postData = postData;
module.exports.getData = getData;

里面使用了一个配置文件config.js,我把请求的服务器的BaseUrl放进去了,方便维护,config.js文件长下面这样:

module.exports = {
  httpServer: "http://localhost",  // 业务服务器地址 每个人的不一样,按照需要改!
  httpToken: null,  // 存放业务服务器提供的 token 
}

HTTP 使用

首先在需要使用HTTP请求的地方引入。

var http = require('../js/http.js')   // 每个人的路径不一样,按照自己的改

GET请求

http.getData('/getList', {}, (rep) => {
      console.log(rep)
    }, (error) => {
      console.log(error)
})

POST请求

     let canshu = {
      'username': 'wjw',
      'password': 'wjw'
    }
    http.postData('/login',canshu,(rep)=>{
      if (rep.status && rep.status != 200) {
        return;
      }
      console.log(rep);
    })

好,就这样吧!