「本文已參與好文召集令活動,點擊查看:後端、大前端雙賽道投稿,2萬元獎池等你挑戰!」前端
昔日的小王憑藉這他的當心謹慎和藉助漂亮能幹的女朋友 Dio 的輔助,終於幹下了一番事業,成爲中華大地響噹噹的人物,小王也變成老王。現在,老王已經年近花甲,看似邁上了人生巔峯,卻也遇到了人生的煩惱——那就是他的兒子,新的小王。git
小王和他爹當年的當心謹慎不一樣,小王自海外留學回來,也不肯意接手老王的事業。反而迷戀起了互聯網,玩遊戲、微博噴人、撩網紅等等。前兩項倒還好,可是後一項,讓老王心煩得很。這網紅哪能隨便撩的,萬一弄出許多小小王來,多你們業都不夠分的啊!github
關鍵時刻,仍是老王的媳婦,曾經被金屋藏嬌的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;
}
複製代碼
這下小王在互聯網就徹底被監視了——並且他壓根不知道!只是,每次他說要錢的時候,老王再也不隨便給了!服務器
但這個時候,小王還能在網上撩,畢竟上網在這個時代是不怎麼要錢的。markdown
老王媳婦 Dio 一看這種方式不行,就又心生一計,每次小王聊網紅的時候,直接狠心拒絕!cookie
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;
}
複製代碼
小王這下子懵圈了,難道是他的那些「土味情話」已經失效了?每次發出去消息都遭受到了無情的打擊,讓他心灰意冷。漸漸地他就淡出了互聯網,至於如今在幹什麼,誰也不知道。感受又像是當初老王金屋藏嬌同樣,如今的小王也逐漸被隱藏了起來。今後,互聯網只剩下小王和各個網紅的傳說。app
藉着老王和小王的故事,咱們講述了 Dio 的封裝和 Dio 的攔截器。其中攔截器能夠應用於不少實際場景:oop
Interceptor
類,實現 onRequest
,onResponse
和 onError
方法便可。注意,Dio 的實例能夠同時添加多個攔截器,以便處理不一樣的狀況。