IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter 网络请求 Dio 拦截器详解 -> 正文阅读

[移动开发]Flutter 网络请求 Dio 拦截器详解

老王的烦恼

昔日的小王凭借这他的小心谨慎和借助漂亮能干的女友 Dio 的辅助,终于干下了一番事业,成为中华大地响当当的人物,小王也变成老王。如今,老王已经年近花甲,看似迈上了人生巅峰,却也遇到了人生的烦恼——那就是他的儿子,新的小王。

小王和他爹当年的小心谨慎不同,小王自海外留学回来,也不愿意接手老王的事业。反而迷恋起了互联网,玩游戏、微博喷人、撩网红等等。前两项倒还好,但是后一项,让老王心烦得很。这网红哪能随便撩的,万一弄出许多小小王来,多大家业都不够分的啊!

image.png

能干的老王媳妇

关键时刻,还是老王的媳妇,曾经被金屋藏娇的Dio 想出了新的招术,再次让老王佩服不已。老王媳妇Dio给小王搞了个拦截器,只要小王要在互联网做什么,都会被她给先拦截下来,然后她再根据小王要做的事情决定是不是要替他发出去;或者是收到什么消息的时候,也会先看一遍,没问题再给小王看。而且,最为关键的是,小王对这一切压根都不知道!

老王媳妇一开始是这么干的,小王在互联网有什么新的动向直接向老王汇报。

static Dio getDioInstance() {
  if (_dioInstance == null) {
    _dioInstance = Dio();
    _dioInstance.interceptors
        .add(InterceptorsWrapper(onRequest: (options, handler) {
      print('报告老王,小王看上了新的网红:' + options.path);
      return handler.next(options);
    }, onResponse: (response, handler) {
      print('报告老王,小王收到了新网红的回复:' + response.statusMessage);
      handler.next(response);
    }, onError: (DioError e, handler) {
      print('报告老王,小王被网红喷啦!' + e.message);
      return handler.next(e);
    }));
  }

  return _dioInstance;
}

这下小王在互联网就完全被监视了——而且他压根不知道!只是,每次他说要钱的时候,老王不再随便给了!

image.png

但这个时候,小王还能在网上撩,毕竟上网在这个时代是不怎么要钱的。

狠心的老王媳妇

老王媳妇 Dio 一看这种方式不行,就又心生一计,每次小王聊网红的时候,直接狠心拒绝!

static Dio getDioInstance() {
  if (_dioInstance == null) {
    _dioInstance = Dio();
    _dioInstance.interceptors
        .add(InterceptorsWrapper(onRequest: (options, handler) {
      print('报告老王,小王看上了新的网红:' + options.path);
      return handler.next(options);
    }, onResponse: (response, handler) {
      print('报告老王,小王收到了新网红的回复:' + response.statusMessage);
      throw new Exception('你死心吧!');
      //handler.next(response);
    }, onError: (DioError e, handler) {
      print('报告老王,小王被网红喷啦!' + e.message);
      return handler.next(e);
    }));
  }

  return _dioInstance;
}

image.png

消停的小王

小王这下子懵圈了,难道是他的那些“土味情话”已经失效了?每次发出去消息都遭受到了无情的打击,让他心灰意冷。渐渐地他就淡出了互联网,至于现在在干什么,谁也不知道。感觉又像是当初老王金屋藏娇一样,现在的小王也逐渐被隐藏了起来。从此,互联网只剩下小王和各个网红的传说。

image.png

后记

借着老王和小王的故事,我们讲述了 Dio 的封装和 Dio 的拦截器。其中拦截器可以应用于很多实际场景:

  • 权限验证:比如接口请求后端返回401未授权时可以跳到登录页,403跳到未授权页面;
  • 异常监控:可以在拦截器处理异常,并且上报到异常监控后台或者发送异常预警消息;
  • 缓存接口:可以对于某些接口将请求缓存在本地,设定一定的缓存有效时限,在时限内重复请求时直接返回本地缓存数据,而无需请求后端接口,降低后端服务器负荷。这块可以参考dio-http-cache
  • Cookie:App 本身是不会缓存 Cookie 信息的,可以使用拦截器在向后端发起请求时自动携带 Cookie信息,可以参考cookie_manager
  • 生成接口文档:可以在拦截器将请求参数,返回结果输出为 Postman格式的接口文档,参考postman_dio
  • 自定义拦截器:可以自定义自己的拦截器类,继承Interceptor类,实现 onRequestonResponseonError方法即可。

注意,Dio 的实例可以同时添加多个拦截器,以便处理不同的情况。
关注岛上码农

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:24:43  更:2021-12-15 18:25:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:01:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码