成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

這次使用一個舒服的姿勢插入HttpClient攔截器技能點

開發 前端
axios是一個基于 promise 的網絡請求庫,可以用于瀏覽器和 node.js;promise 類似于C#的Task async/await機制,以同步的代碼風格編寫異步代碼。

[[427901]]

本文轉載自微信公眾號「精益碼農」,作者有態度的馬甲。轉載本文請聯系精益碼農公眾號。

axios是一個基于 promise 的網絡請求庫,可以用于瀏覽器和 node.js;promise 類似于C#的Task async/await機制,以同步的代碼風格編寫異步代碼;

而axios攔截器就類似于 C# HttpClient自定義message Handler, 給你一個請求/響應在被handler之前做一些自定義動作的機會。

C#請求/響應攔截器

axios請求/響應攔截器的定位就類似于 C# HttpClient的自定義message handler。

.NET默認的message handler是HttpClientHandler,開發者可以插入自定義的message handler。

用途舉例 ① 插入日志 ② 插入自定義Header

(1) 更具體的就是System.Net.Http.DelegatingHandler類,開發者重寫SendAsync方法,可以攔截請求/響應, 注入動作。

  1. protected override Task<HttpResponseMessage> SendAsync( 
  2.      HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) 

自定義message handler形成的是pipeline, 肉眼可猜測使用的是責任鏈模式。

(2) 添加自定義message handler

使用HttpCLientFactory.Create方法:

  1. HttpClient client = HttpClientFactory.Create(new MessageHandler1(), new MessageHandler2()); 

自定義message handler的執行順序,是傳入Create方法的順序,也就是說,上面最后一個handler是最先接觸到響應的。

------以上是.NET Framework插入攔截器的用法-------

推及到.NET Core, 因為大量應用了提前配置&&依賴注入,實際由IHttpClientFactory來注入HttpClient。

提前配置HttpClient攔截器的代碼如下:

  1. services.AddHttpClient("bce-request", x => 
  2.                    x.BaseAddress = new Uri(Configuration.GetSection("BCE").GetValue<string>("BaseUrl"))) 
  3.                 .ConfigureHttpMessageHandlerBuilder(_=> new LoggerMessageHandler{...} )    
  4.                 .ConfigurePrimaryHttpMessageHandler(_ => new BceAuthClientHandler{...}) 

更多有關.NET Core IHttpClientFactory的內幕請點這里。

axios 攔截器

axios一般發起的是ajax請求,我們一般會封裝處理一些通用的請求/響應動作。

碼甲哥就遇到:

(1) 在每次ajax跨域請求時,允許攜帶第三方憑據(cookie、authorization)

(2) 封裝4xx響應碼的處理邏輯

其中就要用到axios的攔截器:

  1. export interface AxiosInterceptorManager<V> { 
  2.   use<T = V>(onFulfilled?: (value: V) => T | Promise<T>, onRejected?: (error: any) => any): number; 
  3.   eject(id: number): void; 

仔細圍觀usesdk,支持傳入兩個函數,

表示請求(響應)一旦準備好了/失敗了,你可以注入的動作。

精簡代碼如下:

  1. import axios from 'axios'
  2. import { 
  3.     message 
  4.   } from 'antd' 
  5.  
  6. const service = axios.create({ 
  7.     baseURL: process.env.REACT_APP_APIBASEURL,  
  8.     timeout: 5000 
  9. }) 
  10. // 添加請求攔截器 
  11. service.interceptors.request.use((reqconfig) => { 
  12.     reqconfig.withCredentials = true
  13.     return reqconfig; 
  14. }, (error) => { 
  15.     return Promise.reject(error); 
  16. }); 
  17.  
  18. // 添加響應攔截器 
  19. service.interceptors.response.use((response) => { 
  20.     return response; 
  21. }, (error) => { 
  22.     if (error.response && error.response.status === 401) { 
  23.         message.error("無權限操作,請聯系tvs運維."
  24.     } 
  25.     return Promise.reject(error); 
  26. }); 

以上對于前端老鳥不值一提,但是上述攔截動作對于把握全棧web開發必不可少。

本文另作為前端快閃四:如何攔截axios請求/響應?

 

責任編輯:武曉燕 來源: 精益碼農
相關推薦

2009-06-24 16:00:00

2025-05-09 08:20:50

2021-11-03 17:04:11

攔截器操作Servlet

2009-09-27 17:37:32

Hibernate攔截

2025-02-28 08:14:53

2020-03-25 17:55:30

SpringBoot攔截器Java

2021-05-17 08:11:24

Axios 開源項目HTTP 攔截器

2023-09-05 08:58:07

2011-05-16 10:14:11

Hibernate

2009-07-08 17:02:11

JDK實現調用攔截器

2011-11-21 14:21:26

SpringMVCJava框架

2020-10-16 16:28:54

Python開發技術

2017-02-06 10:30:13

iOS表單正確姿勢

2009-06-25 15:54:42

Struts2教程攔截器

2009-06-25 15:59:21

Struts2教程攔截器

2012-02-03 13:27:16

2009-02-04 14:19:38

2009-06-04 08:01:25

Struts2攔截器原理

2024-05-06 00:00:00

C#工具代碼

2009-02-04 14:45:06

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久av | 欧美久久视频 | 中文字幕亚洲无线 | 国产玖玖 | a级片在线观看 | 精品在线看 | 免费成人高清在线视频 | 精品日韩一区二区 | 国产精品久久久久久久久久久新郎 | 亚洲精品日韩一区二区电影 | www.操.com| 亚洲成人三级 | 国产午夜精品一区二区三区四区 | 中文字幕爱爱视频 | www.99热.com | 成人美女免费网站视频 | 国产一区 | 一区二区三区久久久 | 日韩在线中文字幕 | 国产我和子的乱视频网站 | 美女视频黄色的 | 97超碰在线免费 | 日韩免费av一区二区 | 久在线 | 免费三级网| 精品国产伦一区二区三区观看体验 | 亚洲国产精品久久久 | 91精品免费视频 | 国产成人免费视频 | 国产亚洲精品美女久久久久久久久久 | 亚洲欧美日韩精品久久亚洲区 | 国产欧美在线观看 | 欧美99 | 一区二区三区中文字幕 | 国产女人叫床高潮大片免费 | 国产成人一区在线 | 天天色天天色 | 亚洲高清中文字幕 | 国产成人在线视频 | 日韩精品一区二区三区在线播放 | 日本黄色不卡视频 |