大家好,又见面了,我是你们的朋友全栈君。
原生小程序的request请求都是异步请求,在实际项目中使用起来很麻烦,自己封装的方法又不够用,所以想到了flyio,不仅可以实现Promise,而且还可以对所有的页面请求进行拦截,使用起来非常的方便。
第一件事首先也是先引用flyio.js了。
下载地址:flyio.js
在utils目录新建http.js
var Fly = require("flyio.js")//引入路径根据自己放置的目录配置
var fly = new Fly;
fly.interceptors.request.use((request) => {
request.timeout = 30000;
if (wx.getStorageSync('token')) {//检查本地缓存是否有token存在没有则重新获取
request.headers = {//设置请求头
"content-type": "application/json",
"cld.stats.page_entry": wx.getStorageSync('scene'),
"version": app.globalData.version,
"token": wx.getStorageSync('token')
}
return request;
} else {
fly.lock();//锁住请求
return app.Load().then(res => {//重新获取token
request.timeout = 30000,
request.headers = {//设置请求头
"content-type": "application/json",
"cld.stats.page_entry": wx.getStorageSync('scene'),
"version": app.globalData.version,
"token": wx.getStorageSync('token')
}
wx.showLoading({
title: "加载中",
mask: true,
});
fly.unlock();//解锁请求
return request;//继续之前的请求
})
}
})
fly.interceptors.response.use(
(response) => {
wx.hideLoading();
return response;//请求成功之后将返回值返回
},
(err) => {
//请求出错,根据返回状态码判断出错原因
console.log(err)
wx.hideLoading();
if (err.status == 0) {
return "网络连接异常"
} else if (err.status == 1) {
return "网络连接超时"
} else if (err.status == 401) {
return "用户未登录"
} else {
if (err.response.data.message) {
return err.response.data.message
} else {
return '请求数据失败,请稍后再试'
}
};
// Do something with response error
}
)
export default {
fly: fly
}
在其他页面引用
import http from "../../utils/http.js"
使用:
http.fly.post(baseUrl + 'tt/news', {
type: 1,
page: 1
}).then(res => {
console.log(res)
})
具体使用文档:https://wendux.github.io/dist/#/doc/flyio/readme
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197335.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有