uniapp网络请求封装 带拦截器,uniapp 响应拦截器

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: