微信小程序request請求實例,網絡請求。
阿新 • • 發佈:2018-10-06
ESS console else bin 實現 set 取數據 調用 header
最近微信小程序開始開放測試了,小程序提供了很多api,極大的方便了開發者,其中網絡請求api是wx.request(object),這是小程序與開發者的服務器實現數據交互的一個很重要的api。
官方參數說明如下
OBJECT參數說明:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
url | String | 是 | 開發者服務器接口地址 |
data | Object、String | 否 | 請求的參數 |
header | Object | 否 | 設置請求的 header , header 中不能設置 Referer |
method | String | 否 | 默認為 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT |
success | Function | 否 | 收到開發者服務成功返回的回調函數,res = {data: ‘開發者服務器返回的內容‘} |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
最簡單的用法如下(以POST請求為例)
1 bindSearchChange:function(e){ 2 var keyword = e.detail.value; 3 wx.request({ 4 url:‘xxxxxxxxx‘, 5 data:{},6 header: {‘Content-Type‘: ‘application/json‘}, 7 success: function(res) { 8 console.log(res) 9 } 10 }) 11 }
下面我們把請求寫在service文件下的http.js文件中,代碼如下
1 var rootDocment = ‘hxxxxx‘;//你的域名 2 function req(url,data,cb){ 3 wx.request({ 4 url: rootDocment + url,5 data: data, 6 method: ‘post‘, 7 header: {‘Content-Type‘: ‘application/json‘}, 8 success: function(res){ 9 return typeof cb == "function" && cb(res.data) 10 }, 11 fail: function(){ 12 return typeof cb == "function" && cb(false) 13 } 14 }) 15 } 16 17 18 module.exports = { 19 req: req 20 }
其中module.exports是將req方法暴露出去使得別的文件中可以使用該方法,由於js函數是異步執行的,所以return 的是回調函數,而不是具體的數據
為了其他文件方便調用此方法,我們在根目錄的app.js文件中將其註冊成為全局函數,如下
1 //app.js 2 var http = require(‘service/http.js‘) 3 App({ 4 onLaunch: function () { 5 //調用API從本地緩存中獲取數據 6 var logs = wx.getStorageSync(‘logs‘) || [] 7 logs.unshift(Date.now()) 8 wx.setStorageSync(‘logs‘, logs) 9 }, 10 getUserInfo:function(cb){ 11 var that = this 12 if(this.globalData.userInfo){ 13 typeof cb == "function" && cb(this.globalData.userInfo) 14 }else{ 15 //調用登錄接口 16 wx.login({ 17 success: function () { 18 wx.getUserInfo({ 19 success: function (res) { 20 that.globalData.userInfo = res.userInfo 21 typeof cb == "function" && cb(that.globalData.userInfo) 22 } 23 }) 24 } 25 }) 26 } 27 }, 28 globalData:{ 29 userInfo:null 30 }, 31 func:{ 32 req:http.req 33 } 34 })
這時這個req就是全局的了,在調用時我們可以使用getApp.func.req()來調用,具體如下
1 var app = getApp() 2 Page({ 3 data: { 4 5 }, 6 onLoad: function (opt) { 7 //console.log(opt.name) 8 app.func.req(‘/api/get_data‘,{},function(res){ 9 console.log(res) 10 }); 11 } 12 })
微信小程序提供了很多api,包括網絡,媒體,數據等,也提供了很多組件,使開發小程序變得很方便。
微信小程序request請求實例,網絡請求。