Angular6筆記之封裝http的示例程式碼
最近抽空學習了一下Angular6,之前主要使用的是vue,所以免不了的也想對Angular6提供的工具進行一些封裝,今天主要就跟大家講一下這個http模組。
之前使用的ajax庫是axios,可以設定baseurl,公共頭部;集中捕捉錯誤等,由於Angular6的依賴注入機制,是不能通過直接修改http模組暴露的變數來封裝的,但是通過官方文件我們知道可以通過攔截器(HttpInterceptor) 來實現這一功能。 攔截器可以攔截請求,也可以攔截響應,那麼通過 攔截請求 就可以實現 設定baseurl,公共頭部;而通過 攔截響應 就可以實現 集中捕獲錯誤 。廢話不多說,上程式碼吧。
第一步:準備工作,匯入 HttpClientModule
在app.module.ts中匯入 HttpClientModule,然後在imports陣列中將 HttpClientModule 加入到 BrowserModule 之後,具體程式碼為:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
第二步:新建有關攔截器的檔案
在app資料夾下新建http-interceptors資料夾,在其內新建base-interceptor.ts,index.ts兩個檔案。其中,base-interceptor.ts是用於設定攔截器的注入器檔案,index.ts則為擴充套件攔截器的提供商。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
通過克隆修改 req 物件即可攔截請求,而操作 **next.handle(newReq)**的結果即可攔截響應。如果需要修改,可直接擴充套件 base-interceptor.ts 或 參考 base-interceptor.ts 檔案新建其他檔案,然後在 index.ts 中正確引入該攔截器,並將其新增到 httpInterceptorProviders 陣列中即可。
第三步:註冊提供商
在app.module.ts中加入以下程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
至此,Angular6的http模組封裝已經基本完成,如果有需要可以自行擴充套件,可參考第二步。如果看完以後不明白或者我有寫的不對的地方,歡迎大家進行評論。