欢迎光临,了解微信小程序开发,就上易用通!

接口调用方式

发布:2018-01-25 14:34浏览: 来源:网络 作者:tianshu

最近开发了一个微信小程序版的任务管理系统,在向Java后台发送接口时遇到了一些问题,在这里做一个简单的总结。
官方接口
官方给出的接口叫做wx.request,请求方式比较简单,下面是官网给出的请求实例。
  1. wx.request({
  2.   url: 'test.php', //仅为示例,并非真实的接口地址
  3.   data: {
  4.      x: '' ,
  5.      y: ''
  6.   },
  7.   header: {
  8.       'content-type': 'application/json'
  9.   },
  10.   success: function(res) {
  11.     console.log(res.data)
  12.   }
  13. })

存在的问题
  • wx.request请求的header中content-type默认为application/json,如果我们想换种方式比如用"application/x-www-form-urlencoded"会发现在请求头信息中并没有取代默认的application/json而是新增了这种方式,另外在用jquery.ajax请求时即便同样使用application/json方式来请求,得到的数据格式也不相同,无论用什么请求方式ajax都会将请求数据转换为&name1=value1&name2=value2的形式,这样在根据content-type来解析请求数据时就会出现问题,不知道微信是有意这样做还是它根本就是个bug。总之是给我带来了不必要的麻烦。
  • 微信小程序发送的是https请求,在本地调试时可以用http,如果放在手机上测试时校验请求方式和域名,不合法会报以下错误:
接口调用方式(图1)
  • 为了方便请求,可以对wx.request做一个简单的封装,这样我们再调用的时候就方便了许多,代码如下:
  1. var app = getApp();
  2. function request(url,postData,doSuccess,doFail,doComplete){
  3.       var host = getApp().conf.host;
  4.       wx.request({
  5.         url: host+url,
  6.         data:postData,
  7.         method: 'POST', 
  8.         success: function(res){
  9.           if(typeof doSuccess == "function"){
  10.               doSuccess(res);
  11.           }
  12.         },
  13.         fail: function() {
  14.           if(typeof doFail == "function"){
  15.               doFail();
  16.           }
  17.         },
  18.         complete: function() {
  19.           if(typeof doComplete == "function"){
  20.               doComplete();
  21.           }
  22.         }
  23.       });
  24.   }
  25. }
  26.  
  27. module.exports.request = request;


  • 如果一个接口在不同地方频繁用到,原本设想写一个函数,然后将函数暴露供其他js调用,但后来发现wx.request中设置async是无效的,只能发异步请求,所以如果想写一个函数来返回调用接口得到的数据就比较难实现。
  •  




免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。