微信小程序关于如何对api获取数据的请求进行封装
为了方便数据请求的管理,老师今天给我们讲解了rich-text的相关知识点,按照自己的理解进行总结
//env.js主要配置的是公共的baseUrl
module.exports={
//开发环境
dev:{
baseUrl:'http://127.0.0.1:8080'
},
//生产环境
prod:{
baseUrl:'https://api.it120.cc'
},
//测试环境
test:{
baseUrl:'https://api.1909A.com'
}
}
//request.js文件再次更加细化封装了wx.request
const { baseUrl } = require('./env.js').prod
const vipUrl = "sbq"
module.exports = {
// request是一个函数,封装了request,其中的参数不填的话就会有默认值
request:function(url,method="GET",data={},isSubDomain=true){
//把正确的请求地址拼接起来
let fullurl = `${baseUrl}/${isSubDomain?vipUrl:""}/${url}`
//Promise 对象用于表示一个异步操作的最终完成 (或失败), 及其结果值.
return new Promise((resolve,reject)=>{
wx.request({
url: fullurl,
method,
data,
header:{
//此处的头部信息要注意接口文档
"content-type":"pplication/x-www-form-urlencoded"
},
//成功回调
success(res){
if(res.statusCode === 200 && res.data.code===0){
//返回的数据
resolve(res.data.data)
}else{
console.log("接口有问题")
}
},
//失败回调
fail(){
console.log("接口问题")
}
})
})
}
}
//api.js执行了一个回调函数,调用了request.js的request方法,request方法呢中有一个promise对象成功后返回了获取的数据,因为return返回了promise函数,又因为promise函数=获取的数据,所以request返回给api.js了后取得数据
const {request} = require('./request.js')
module.exports={
// 商品列表接口
goodsItem:()=>{
return request("shop/goods/list","GET","",true)
}
}
//xxx.js文件调用了api中的方法,上边说到api中的方法返回的是request中的数据,所以api中的方法就有了获取的数据,js中调用了方法就获取到了数据
const { goodsItem }=require('../../http/api.js')
.........
goodsItem().then(res=>{
this.setData({
goodItem:res
})
})
总的流程呢就是
页面中获取数据的方法执行————>执行js中的方法————>js引入并执行api.js中的方法————>api.js中的方法返回了request.js中的request方法————>request.js中的request方法return了一个promise对象————>promise对象中执行wx.request方法获取数据并返回给request————>所以request.js中的request方法就有了数据————>所以api.js中的方法就有了数据————>js文件调用就有了获取的数据