您当前的位置: 首页 > 知识百科 > 微信小程序请求封装操作步骤详解

微信小程序请求封装操作步骤详解

时间:2023-07-01 14:05 阅读数:96 人阅读 分类:知识百科

  关于微信小程序开发方面的内容,小编已经介绍过很多了,今天写的是关于微信小程序请求封装的文章,希望这份资料能够帮助到大家。

  在这里首先声明一个小程序文档的bug,导致大伙们在请求的时候,服务器收到不到参数的问题

  示例代码:

  wx.request({

  url: 'test.php', //仅为示例,并非真实的小程序接口地址

  data: {

  x: '' ,

  y: ''

  },

  header: {

  'Content-Type': 'application/json'

  },

  success: function(res) {

  console.log(res.data)

  }

  })

  其中header 中的Content-Type,应该用小写content-type才能让服务器收到参数。让我折腾的好久,改了服务器仍然不行,原来是这个问题。参数在request payload中,服务器不能收到,使用如下转换之后

  function json2Form(json) {

  var str = [];

  for(var p in json){

  str.push(encodeURIComponent(p) + "=" + encodeURIComponent(json[p]));

  }

  return str.join("&");

  } 

  


  最终还是认为是content-type的问题。最后改小写就ok,觉得微信这么牛逼的团队,犯了一个很低级 的错误,把我开发者折腾的爬了。不说,上代码吧。

  1 、Http请求的类

  import util from 'util.js';

  /**

  * url 请求地址

  * success 成功的回调

  * fail 失败的回调

  */

  function _get( url, success, fail ) {

  console.log( "------start---_get----" );

  wx.request( {

  url: url,

  header: {

  // 'Content-Type': 'application/json'

  },

  success: function( res ) {

  success( res );

  },

  fail: function( res ) {

  fail( res );

  }

  });

  console.log( "----end-----_get----" );

  }

  /**

  * url 请求地址

  * success 成功的回调

  * fail 失败的回调

  */

  function _post_from(url,data, success, fail ) {

  console.log( "----_post--start-------" );

  wx.request( {

  url: url,

  header: {

  'content-type': 'application/x--form-urlencoded',

  },

  method:'POST',

  data:{data: data},

  success: function( res ) {

  success( res );

  },

  fail: function( res ) {

  fail( res );

  }

  });

  console.log( "----end-----_get----" );

  }

  /**

  * url 请求地址

  * success 成功的回调

  * fail 失败的回调

  */

  function _post_json(url,data, success, fail ) {

  console.log( "----_post--start-------" );

  wx.request( {

  url: url,

  header: {

  'content-type': 'application/json',

  },

  method:'POST',

  data:data,

  success: function( res ) {

  success( res );

  },

  fail: function( res ) {

  fail( res );

  }

  });

  console.log( "----end----_post-----" );

  }

  module.exports = {

  _get: _get,

  _post:_post,

  _post_json:_post_json

  }

  2、测试用例

  2.1 get请求

  //GET方式

  let map = new Map();

  map.set( 'receiveId', '0010000022464' );

  let d = json_util.mapToJson( util.tokenAndKo( map ) );

  console.log( d );

  var url1 = api.getBaseUrl() + 'SearchTaskByReceiveId?data='+d;

  network_util._get( url1,d,

  function( res ) {

  console.log( res );

  that.setData({

  taskEntrys:res.data.taskEntrys

  });

  }, function( res ) {

  console.log( res );

  });123456789101112131415123456789101112131415

  2.2 POST请求

  //Post方式

  let map = new Map();

  map.set( 'receiveId', '0010000022464' );

  let d = json_util.mapToJson( util.tokenAndKo( map ) );

  console.log( d );

  var url1 = api.getBaseUrl() + 'SearchTaskByReceiveId';

  network_util._post( url1,d,

  function( res ) {

  console.log( res );

  that.setData({

  taskEntrys:res.data.taskEntrys

  });

  }, function( res ) {

  console.log( res );

  });123456789101112131415123456789101112131415

  效果

  


  每一个步骤对于小程序开发来说都是至关重要的,尤其是微信小程序请求封装的开发,大家学会操作步骤了吗?更多相关资料都在微信小程序商店。

  

  微信小程序同步请求的几种方式

  如何处理小程序请求和解析数据的问题

  小程序数据请求的方法