小程序通用网络请求+API封装

概述
之前一直是android开发,最近准备入手一下小程序。而网络请求+API封装我发现不管哪种语言工程都是需要的。我提供一下通用的小程序网络请求和API封装

第一步

在Page文件夹中新建一个utils包名
在utils包名下新建一个叫做httprequest.js文件
分部解释一下httprequest.js内容
网络请求头,必备的。

/**
 * 请求头
 */
var header = {
  'content-type': 'application/json',
  'Authorization': "Bearer " + wx.getStorageSync("token"),
  'os': 'android',
  'version': '1.0.0',
}

get请求

function get(url, params, onSuccess, onFailed) {
  console.log("请求方式:", "GET")
  request(url, params, "GET", onSuccess, onFailed);
}

post请求

function post(url, params, onSuccess, onFailed) {
  console.log("请求方式:", "POST")
  request(url, params, "POST", onSuccess, onFailed);
}

请求方式有: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
上述举例get/post请求。有其他需要的可按实例自己添加

网络请求
url:URL请求地址
params:请求参数
method:请求方式(请求方式上述以写多种方式)
onSuccess:请求成功回调
onFailed:请求失败回调

function request(url, params, method, onSuccess, onFailed) {
  wx.showLoading({
    title: "正在加载中...",
  })
  wx.request({
    url: url,
    data: dealParams(params),
    method: method,
    header: header,
    success: function (res) {
      wx.hideLoading();
      if (res.data) {
        if (res.statusCode == 200) {
          onSuccess(res.data);
        } else {
          onFailed(res.data.message); 
        }
      }
    },
    fail: function (error) {
      onFailed(""); 
    }
  })
}

这块代码值得注意,相当于把该文件内容方式抛出给其他类调用。必写~~~~

module.exports = {
  postRequest: post,
  getRequest: get,
}

httprequest.js完整代码如下:

/**
 * 请求头
 */
var header = {
  'content-type': 'application/json',
  'Authorization': "Bearer " + wx.getStorageSync("token"),
  'os': 'android',
  'version': '1.0.0',
}
function get(url, params, onSuccess, onFailed) {
  request(url, params, "GET", onSuccess, onFailed);
}
function post(url, params, onSuccess, onFailed) {
  console.log("请求方式:", "POST")
  request(url, params, "POST", onSuccess, onFailed);

}


function request(url, params, method, onSuccess, onFailed) {
  wx.showLoading({
    title: "正在加载中...",
  })
  wx.request({
    url: url,
    data: dealParams(params),
    method: method,
    header: header,
    success: function (res) {
      wx.hideLoading();
      if (res.data) {
        if (res.statusCode == 200) {
          onSuccess(res.data); 
        } else {
          onFailed(res.data.message); 
        }
      }
    },
    fail: function (error) {
      onFailed("");
    }
  })
}
// 1.通过module.exports方式提供给外部调用
module.exports = {
  postRequest: post,
  getRequest: get,
}

以上就是简单的小程序网络请求封装。
接下来是API封装。当然我也不知道这样写到底如何,新手可查看,大佬勿嘲笑

在utils文件夹中新建api.js
esUrl 来区分是正式环境还是测试环境

var esUrl = 1;  
if(esUrl == 1){
  var url_image = '测试环境'   //加载图片
  var url_main = '测试环境'    //主接口
  var url_web = '测试环境'     //h5
}
if(esUrl == 2){
  var url_image = '正式环境'
  var url_main = '正式环境'
  var url_web = '正式环境'
}

登录api

//账号密码登录
var getLoginType = 'XXXXXXXXXXXXXXXXXXXXXX'   //api     eg:test/login/logintype

接下来只要把他抛出可让外部调用就行

module.exports = {
  url_image: url_image,
  url_main: url_main,
  url_web: url_web,
  getLoginType: getLoginType
}

完整api.js代码

var esUrl = 2;  //改变网络环境,1 内网   2公网
if(esUrl == 1){
  var url_image = 'XXXXXXXXXXXXXXXXXXXXX'
  var url_main = 'XXXXXXXXXXXXXXXXXXXXX'
  var url_web = 'XXXXXXXXXXXXXXXXXXXXX'
}
if(changeUrl == 2){
  var url_image = 'XXXXXXXXXXXXXXXXXXXXX'
  var url_main = 'XXXXXXXXXXXXXXXXXXXXX'
  var url_web = 'XXXXXXXXXXXXXXXXXXXXX'
}

//账号密码登录
var getLoginType = 'XXXXXXXXXXXXXXXXXXXXX'

module.exports = {
  url_image: url_image,
  url_main: url_main,
  url_web: url_web,
  getLoginType: getLoginType
}

如何调用呢?
前往你需要条用的index.js中

第一步:
获取应用实例

var http = require('../utils/httprequest.js');
var appUrl = require('../utils/api.js');

第二步:
调用请求方法

	 var prams = {
      userName:"XXXXX",
      passWord:"XXXXX",
    }
    let _this = this;
    http.postRequest(appUrl.url_main+appUrl.getLoginType, prams,
      function(res){
        
        _this.setData({
          
        })
      },
      function(err){
      }
    )

var prams 为请求参数
http.postRequest这个方法正是httprequest.js抛出来的方法
appUrl.url_main+appUrl.getLoginType 为URL请求地址
funcation(res) res为请求内容
funcation(err) err请求失败
注:一定要写let _this=this 小程序中的setData方法是赋值方法,但是在funcation(res)中this已经非全局this,故在请求之前先声明一个_this为主体this

好了。就写到这吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值