uniapp网络请求封装 带拦截器,uniapp 响应拦截器
uniapp添加请求拦截器的方法:1、定义LsxmRequest类并添加默认配置、拦截器与请求方法;2、后续需要自定义配置与获取接口地址,在类中添加得到和设置方法;3、利用标志特性定义四个私有变量,防止变量污染。
单一应用程序开发(仿饿了么)开发课程:进入学习
本教程操作环境:windows7系统、uni-app2.5.1版本,戴尔自交第三代电脑,该方法适用于所有品牌电脑。
uniapp添加请求拦截器的方法:
1、利用标志特性定义四个私有变量,防止变量污染
const config=Symbol("config ")
const isCompleteURL=Symbol( isCompleteURL )
const request before=Symbol( request before )
const request after=Symbol( request after )2定义LsxmRequest类并添加默认配置、拦截器与请求方法
LsxmRequest类{
//默认配置
[配置]={
基本URL:“”,
标题:{
"内容类型":"应用程序/json "
},
方法:“得到”,
数据类型: json ,
响应类型:"文本"
}
//拦截器
拦截器={
请求:(func)={
如果(函数)
{
LsxmRequest[之前请求]=func
}
其他
{
LsxmRequest[之前请求]=(请求)=1请求
}
},
响应:(func)={
如果(函数)
{
LsxmRequest[requestAfter]=func
}
其他
{
LsxmRequest[请求时间]=(响应)=响应
}
}
}
静态[请求之前](配置){
返回配置
}
静态[请求之后](响应){
返回响应
}
静态[isCompleteURL] (url) {
return/(http https):\/\/([\ w .]\/?)\S*/.测试(网址)
}
请求(options={}) {
选项。基本URL=选项。基本URL this[config].基础地址
选项。数据类型=选项。数据类型 this[config].数据类型
选项。URL=LsxmRequest[isCompleteURL](选项。网址)?选项。网址:(选项。基本URL选项。网址)
选项。数据=选项。数据
options.header={.选项.标题.这个[配置]。header}
选项。方法=选项。方法 this[config].方法
选项={.选项,LsxmRequest[requestBefore](选项)}
返回新承诺((解决,拒绝)={
options.success=function (res) {
resolve(LsxmRequest[request after](RES))
}
options.fail=function (err) {
reject(LsxmRequest[之后请求](err))
}
统一请求(选项)
})
}
get (url,data,options={}) {
options.url=url
options.data=data
options.method=GET
返回此请求(选项)
}
post (url,data,options={}) {
options.url=url
options.data=data
options.method=POST
返回此请求(选项)
}
}3、后续需要自定义配置与获取接口地址,在类中添加得到和设置方法:
setConfig (func) {
此[配置]=func(此[配置])
}
getConfig() {
返回此[配置];
}4、用自定义插件注册的方法将apis.js(后续在主页。射流研究…中需要导入apis.js)中的接口赋到自定义的某视频剪辑软件原型变量$lsxmApi上,为了避免每个页面都要引入一次,在每个页面的创建前生命周期混入。
lsxmrequest。安装=功能(Vue){
Vue.mixin({
创建前:函数()
{
如果(这个. options.apis)
{
console.log(这个. options.apis)
Vue ._lsxmRequest=this .$ options.apis
}
}
})
对象。定义属性(vue。原型, $lsxmApi ,{
获取:函数()
{
返回Vue ._ lsxmRequest.apis
}
})
}
导出默认LsxmRequest5,在配置文件中实例化并自定义请求配置项(此处根据项目需要在头部加入令牌)与拦截器
从导入LsxmRequest ./LsxmRequest
const lsxmRequest=new lsxmRequest()
//请求拦截器
lsxmrequest。截击机。请求((请求)={
如果(uni。getstoragesync( token ){
请求。header[令牌]=uni。getstoragesync( token );
}
退货请求
})
//响应拦截器
lsxmrequest。截击机。响应((响应)={
console.log(beforeRespone ,response);
//超时重新登录
if(response.data.isOverTime){
uni.showModal({
标题:提示,
内容:您已超时,请重新登录!,
showCancel:false,
图标:"成功",
成功:函数(e){
如果(确认){
大学。重定向({
URL:"/pages/log in/log in "
})
}
}
});
}
其他
{
返回响应;
}
})
//设置默认配置
lsxmrequest。设置配置((config)={
config.baseURL=http://
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。