fetch 添加拦截器拦截器

使用过axios的便会知道axios 有axios.interceptors.request.use请求拦截器与service.interceptors.response.use响应拦截器,可以请求前和,then,catch前统一处理响应信息或者response

expand_fetch.jsconst req_interceptors = []   //请求拦截方法存放
const res_interceptors = []    //响应拦截方法存放function  expand_fetch( url, option = { } ){ if( !option.method ){option.method = 'GET'    }//多个请求拦截器依次更改option req_interceptors.forEach( fn => option = fn(option) )return  new Promise((resolve,reject)=>{//使用原生fetchfetch(url,option).then(( res )=>{‘//多个响应拦截器依次更改res res_interceptors.forEach( fn => res = fn(res) )resolve(res)}).catch((error)=>{reject(error)})})
}//挂载添加和删除拦截器的方法
expand_fetch.interceptors = {request:{ use : (fn)=>{req_interceptors.push(fn)return fn},eject:(data)=>{if(req_interceptors.indexOf(data) !== -1){req_interceptors.splice(req_interceptors.indexOf(data),1)}}},response:{ use : (fn)=>{res_interceptors.push(fn)return fn}},eject:(data)=>{if(res_interceptors.indexOf(data) !== -1){res_interceptors.splice(res_interceptors.indexOf(data),1)}}
}export default expand_fetch

使用

import Fetch from './expand_fetch.js'//为post数据转为 json 发送
const c_req = Fetch.interceptors.request.use((option)=>{if(option.method === "POST"){option.body = JSON.stringify(option.body)}return option
})//直接获取到返回内容的数据
const c_res = Fetch.interceptors.response.use((res)=>{if(res.code === 200 && res.data ){return res.data}return res
})//清除拦截器
Fetch.interceptors.request.eject(c_req)
Fetch.interceptors.response.eject(c_res)

为fetch添加拦截器功能相关推荐

  1. javaweb添加拦截器

    js请求后台代码添加拦截器: package com.ctzj.biz.isale.deploy.controller; import java.io.IOException; import java ...

  2. 拦截器 java_在Java后端如何添加拦截器

    (1)InterceptorConfig.java文件内容如下: import org.springframework.web.servlet.config.annotation.WebMvcConf ...

  3. cxf添加拦截器_在CXF API和拦截器中添加Gzip压缩

    cxf添加拦截器 如今,由于我们在响应中发送大量数据,因此必须对API响应执行Gziping. 它节省了网络带宽和交付时间,当然还节省了Internet上的空间. CXF提供了以多种方式使用Gzip压 ...

  4. springboot 添加拦截器之后中文乱码_spring boot 2.x 添加拦截器配置未生效的问题

    背景: 今天有一个需求需要拦截除登录相关请求以外的所有请求,并查看request 中是否包含指定的信息,而自然就想到了使用拦截器就可以轻松实现 编写拦截器,获取请求头信息中的test,并打印出来 @C ...

  5. token拦截器android_vue.js添加拦截器,实现token认证(使用axios)

    什么是token? token是一个用户自定义的任意字符串,目前开发中,token都是在服务端生成并且token的值会保存到服务器后台.只有服务器和客户端知道这个字符串,于是,这个token就成了两者 ...

  6. springboot添加拦截器 监听等设置

    1.添加拦截器 package com.jy.config;import org.springframework.context.annotation.Configuration; import or ...

  7. 修正Strut2 自带上传拦截器功能

    Struts2字典的FileUploadInterceptor 拦截器 主要帮助获取上传文件的ContentType.fileName.文件对象.如果开发人员在开发过程中使用.则需要设置set/get ...

  8. 添加拦截器解析用户信息

    已登录购物车 接下来,我们完成已登录购物车. 在刚才的未登录购物车编写时,我们已经预留好了编写代码的位置,逻辑也基本一致. 添加登录校验 购物车系统只负责登录状态的购物车处理,因此需要添加登录校验,我 ...

  9. WebService学习总结十 使用Spring发布WebService并添加拦截器

    首先使用Spring方式发布成功WebService,再在客户端和服务器端引入出拦截器和入拦截器,引入的方式是写在配置文件中的. 客户端: 自定义的拦截器 package ws.client.inte ...

最新文章

  1. WPF资源的基本概念
  2. wxPython多线程界面卡死或在不同平台崩溃问题
  3. 【网络协议】TCP分段与UDP/IP分片 (MTU最大传输单元,MSS最大分段大小)
  4. 关于chm文件打不开的解决方案
  5. 算法导论笔记:06堆排序
  6. 聊聊编程那些破事-0.Prehistory
  7. 使用scrapy-redis构建简单的分布式爬虫
  8. 手机论文查重软件哪个好?
  9. 复旦大学电子信息专业考研上岸经验分享
  10. php 悬浮按钮,Android_Android利用悬浮按钮实现翻页效果,今天给大家分享下自己用悬浮 - phpStudy...
  11. JAVA:实现LongestPalindromicSubsequence最长回文子序列算法(附完整源码)
  12. 阿里正式开源通用算法平台Alink,“双11”将天猫推荐点击率提升4%
  13. 申请专利的那些事——如何用电子客户端自己申请发明专利
  14. EasyExcel使用
  15. 张驰课堂:六西格玛培训工具——箱线图
  16. ubuntu18.04 安装新版本的clang-format 9
  17. 百度地图POI的边界GEOJSON数据采集
  18. 「重磅开篇」形成完善的多线程世界观
  19. 飞飞小说源码php,飞飞小说Ver1.11
  20. Vmware中安装KVM必要条件

热门文章

  1. 零基础如何学习SEO网站优化
  2. 使用这些方式让你的ipad拥有更长的使用寿命
  3. 腾讯开源Spring Cloud Tencent 是什么
  4. ios 关于开源框架GPUImage的简单说明
  5. 大寰机器人通讯转换系统(CTS-B1.0) 操作说明
  6. 《Windows核心编程》读书笔记四 进程
  7. 客户端设置超时,max_fails失效----问题分析
  8. a foreign key constraint fails
  9. sapi 实现语音朗读
  10. Mapper method 'comxx' has an unsupported return type