微信小程序request请求实例,网络请求。

最近微信小程序开始开放测试了,小程序提供了很多api,极大的方便了开发者,其中网络请求api是wx.request(object),这是小程序与开发者的服务器实现数据交互的一个很重要的api。

官方参数说明如下

OBJECT参数说明:

参数名类型必填说明
urlString开发者服务器接口地址
dataObject、String请求的参数
headerObject设置请求的 header , header 中不能设置 Referer
methodString默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
successFunction收到开发者服务成功返回的回调函数,res = {data: '开发者服务器返回的内容'}
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

最简单的用法如下(以POST请求为例)

    bindSearchChange:function(e){  
       var keyword = e.detail.value;  
       wx.request({  
         url:'xxxxxxxxx',  
         data:{},  
         header: {'Content-Type': 'application/json'},  
         success: function(res) {  
           console.log(res)  
         }  
       })  
     }  

下面我们把请求写在service文件下的http.js文件中,代码如下

    var rootDocment = 'hxxxxx';//你的域名  
    function req(url,data,cb){  
        wx.request({  
          url: rootDocment + url,  
          data: data,  
          method: 'post',  
          header: {'Content-Type': 'application/json'},  
          success: function(res){  
            return typeof cb == "function" && cb(res.data)  
          },  
          fail: function(){  
            return typeof cb == "function" && cb(false)  
          }  
        })  
    }  
      
      
    module.exports = {  
      req: req  
    }  

其中module.exports是将req方法暴露出去使得别的文件中可以使用该方法,由于js函数是异步执行的,所以return 的是回调函数,而不是具体的数据


为了其他文件方便调用此方法,我们在根目录的app.js文件中将其注册成为全局函数,如下

    //app.js  
    var http = require('service/http.js')  
    App({  
      onLaunch: function () {  
        //调用API从本地缓存中获取数据  
        var logs = wx.getStorageSync('logs') || []  
        logs.unshift(Date.now())  
        wx.setStorageSync('logs', logs)  
      },  
      getUserInfo:function(cb){  
        var that = this  
        if(this.globalData.userInfo){  
          typeof cb == "function" && cb(this.globalData.userInfo)  
        }else{  
          //调用登录接口  
          wx.login({  
            success: function () {  
              wx.getUserInfo({  
                success: function (res) {  
                  that.globalData.userInfo = res.userInfo  
                  typeof cb == "function" && cb(that.globalData.userInfo)  
                }  
              })  
            }  
          })  
        }  
      },  
      globalData:{  
        userInfo:null  
      },  
      func:{  
        req:http.req  
      }  
    })  

这时这个req就是全局的了,在调用时我们可以使用getApp.func.req()来调用,具体如下

    var app = getApp()  
    Page({  
      data: {  
          
      },  
      onLoad: function (opt) {  
        //console.log(opt.name)  
       app.func.req('/api/get_data',{},function(res){  
         console.log(res)  
        });  
      }  
    })  

微信小程序提供了很多api,包括网络,媒体,数据等,也提供了很多组件,使开发小程序变得很方便。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值