request 指的是小程序中的網(wǎng)絡(luò)請(qǐng)求,在 mpvue框架中可以通過(guò)小程序提供的原生 API?wx.request
?來(lái)進(jìn)行相關(guān)的處理。愛(ài)掏網(wǎng) - it200.com但是在這里推薦一個(gè)第三方的網(wǎng)絡(luò)請(qǐng)求庫(kù)?fly。愛(ài)掏網(wǎng) - it200.com之所以推薦這個(gè)第三方庫(kù),是因?yàn)榭梢栽诙鄠€(gè)端上實(shí)現(xiàn)代碼的復(fù)用,目前已支持的有?Node.js
?、微信小程序
?、Weex
?、React Native
?、Quick App
。愛(ài)掏網(wǎng) - it200.com
mpvue沒(méi)配置請(qǐng)求方式時(shí)碰到如下圖的錯(cuò)誤:
原因
-
報(bào)錯(cuò)的內(nèi)容是,非法的url。愛(ài)掏網(wǎng) - it200.com
-
你的請(qǐng)求地址只有路徑,沒(méi)有域名,肯定是非法的呀,就是webpack打包重寫的時(shí)候沒(méi)加上域名的原因
原生 API?wx.request
?能用,但不是最好的方法,最好的還是fly,因?yàn)闉榱艘院蠖嗥脚_(tái)的考慮,最好使用fly.js
進(jìn)入正題:
01.做之前先關(guān)閉校驗(yàn)合法域名,因?yàn)槲覜](méi)在后臺(tái)進(jìn)行配置。愛(ài)掏網(wǎng) - it200.com后臺(tái)進(jìn)行配置合法域名,按著官方給的配置就OK了,這里就不寫了,因?yàn)橹皇莻€(gè)測(cè)試,用的都是測(cè)試的appid
https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html
02.新建fly 文件? src>utils>fly.js
fly.js 內(nèi)容如下: (其中const host = ‘ ’? 就是你自己需要配置的域名,記著加http)
//定義請(qǐng)求地址
const host = 'http://1.119.44.250:8081/';function request(url, method, data, header = {}) {wx.showLoading({title: '加載中' })return new Promise((resolve, reject) => {wx.request({url: host + url,method: method,data: data,headers: {'content-type': 'application/json' // 默認(rèn)轉(zhuǎn)為json格式},success: function(res) {wx.hideLoading();resolve(res.data)},fail: function(error) {wx.hideLoading();reject(false)},complete: function() {wx.hideLoading();}})})
}function get(obj) {return request(obj.url, 'GET', obj.data)
}function post(obj) {return request(obj.url, 'POST', obj.data)
}export default {request,get,post
}
03.根目錄下的main.js中引入
import Vue from 'vue'
import App from './App'
import fly from './utils/fly'
Vue.prototype.$http = fly;Vue.config.productionTip = false
App.mpType = 'app'const app = new Vue(App)
app.$mount()
04.頁(yè)面中使用
this.$http.post({url:"lives/getinfo",data:{"token":"admintoken","uid":"100101",}}).then(res =>{console.log(res.status)if(res.status == 1) {this.user.userInfo = res.data} else {wx.showToast({title: '系統(tǒng)開(kāi)小差', icon: 'loading', duration: 2000, mask: true, });}});
?