摘要:發(fā)送全局參數(shù)我做單頁面應(yīng)用時,會有這樣一個情景當(dāng)用戶登錄后,服務(wù)器會返回一個值,之后的大部分請求都需要傳遞這個參數(shù)。因此,我在中增加這樣一個函數(shù)來解決上面的問題。
關(guān)于作者
馬隆博(Lenbo Ma),Java,Javascript
Blog: http://mlongbo.com
E-Mail: mlongbo@gmail.com
文章編寫于: 2014/08/10
轉(zhuǎn)載請注明出處:
http://mlongbo.com/http-js-zai-ajaxdan-y...
要解決的問題簡化api使用;
為頁面中Ajax請求設(shè)置全局?jǐn)r截器;
頁面中所有Ajax請求向服務(wù)器發(fā)送全局參數(shù);
實現(xiàn) 簡化API我個人喜歡鏈?zhǔn)秸{(diào)用,以及簡單明了的API設(shè)計。因此,我主要在以下幾個部分做了簡化:
為每種請求類型增加一個函數(shù)。如: $http.get(); $http.post(); $http.del(); $http.put();
可以動態(tài)設(shè)置請求參數(shù);
req.push(key,val); or req.push(jsonObj); //設(shè)置請求參數(shù), 可同時增加一個或多個參數(shù)
req.data(jsonObj); //會覆蓋push函數(shù)設(shè)置過的值
req.header(key,val); or req.header(jsonObj); //請求頭, 可同時增一個或多個
req.headers(jsonObj); //會覆蓋header函數(shù)設(shè)置過的值
同樣, 其他的功能也可以拆分成獨(dú)立函數(shù)來設(shè)置, 比如:
req.type(typeStr); //設(shè)置響應(yīng)數(shù)據(jù)類型
req.cache(boolean); //是否緩存
總之,你完全可以按照你自己最喜愛的方式定制API。
攔截器實現(xiàn)之所以會有攔截器的需求,是因為我之前所做的一個應(yīng)用的數(shù)據(jù)響應(yīng)格式如下:
{ code: 1, message: "響應(yīng)信息" }
其中code值會有這樣幾種值:
0 failed
1 success
2 session timeout
因此我需要統(tǒng)一處理會話過期情況,比如通知用戶重新登錄等。
我使用req.interceptor(type,func(res){}); 來增加一個攔截器。當(dāng)服務(wù)器響應(yīng)數(shù)據(jù)時,將先調(diào)用設(shè)置的全局?jǐn)r截器,之后再去調(diào)用業(yè)務(wù)相關(guān)的回調(diào)函數(shù)。如果我http.js去服務(wù)器獲取html模板代碼時,即響應(yīng)的數(shù)據(jù)類型是text/html,而不是application/json,這時候再去做攔截就不好玩了。因此,我用了一個type參數(shù)來給interceptor分組。
發(fā)送全局參數(shù)我做單頁面應(yīng)用時,會有這樣一個情景:
當(dāng)用戶登錄后,服務(wù)器會返回一個token值,之后的大部分api請求都需要傳遞這個token參數(shù)。因此,如果在每次ajax請求時都手動增加一個token參數(shù)值,就感覺有些效率低下。同樣,你的同事們可能也會遇到和你同樣的情況,這時候還要一個個告訴他們怎么設(shè)置token參數(shù)就很不好玩兒了。
因此,我在http.js中增加$http.global(key,val); or $http.global(jsonObj);這樣一個函數(shù)來解決上面的問題。
結(jié)語至于基于什么ajax庫來封裝,你可以使用原生ajax,jquery ajax,或者其他你喜歡的ajax library。同時,歡迎各種討論 ^_^
這是我寫的http.js代碼片段,不太全面,也許可供你參考。
掃描二維碼,關(guān)注我。
內(nèi)容大多會是后端技術(shù)、前端工程、DevOps,偶爾會有一些大數(shù)據(jù)相關(guān),會推薦一些好玩的東西。希望你會喜歡~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/85252.html
摘要:原作者原鏈接基于多入口生成模板用于服務(wù)端渲染的方案及實戰(zhàn)法律聲明警告本作品遵循署名非商業(yè)性使用禁止演繹未本地化版本協(xié)議發(fā)布。這是什么背景現(xiàn)代化的前端項目中很多都使用了客戶端渲染的單頁面應(yīng)用。 原作者:@LinuxerPHL原鏈接:基于 Webpack 4 多入口生成模板用于服務(wù)端渲染的方案及實戰(zhàn) 法律聲明 警告:本作品遵循 署名-非商業(yè)性使用-禁止演繹3.0 未本地化版本(CC BY-...
摘要:原作者原博文地址基于多入口生成模板用于服務(wù)端渲染的方案及實戰(zhàn)法律聲明警告本作品遵循署名非商業(yè)性使用禁止演繹未本地化版本協(xié)議發(fā)布。這是什么背景現(xiàn)代化的前端項目中很多都使用了客戶端渲染的單頁面應(yīng)用。 原作者:@LinuxerPHL原博文地址: 基于 Webpack 4 多入口生成模板用于服務(wù)端渲染的方案及實戰(zhàn) 法律聲明 警告:本作品遵循 署名-非商業(yè)性使用-禁止演繹3.0 未本地化版本(...
摘要:你覺得的怎么樣,想不想定制更適合自己的絲滑。這篇文章基于我之前的的一篇在單頁面中的應(yīng)用整理而來。因此,我基于,重新封裝了一層。內(nèi)容大多會是后端技術(shù)前端工程,偶爾會有一些大數(shù)據(jù)相關(guān),會推薦一些好玩的東西。希望你會喜歡一切,源于喜歡。 showImg(http://ww1.sinaimg.cn/large/b196a42dgw1f2t2s0fkzoj20fu0643yd.jpg); 你覺得...
摘要:個人認(rèn)為單頁面應(yīng)用的優(yōu)勢相當(dāng)明顯前后端職責(zé)分離,架構(gòu)清晰前端進(jìn)行交互邏輯,后端負(fù)責(zé)數(shù)據(jù)處理。上面的這種單頁面應(yīng)用也有其相應(yīng)的一種開發(fā)工作流,當(dāng)然這種工作流也適合非單頁面應(yīng)用進(jìn)行產(chǎn)品功能原型設(shè)計。 未經(jīng)允許,請勿轉(zhuǎn)載。本文同時也發(fā)布在我的博客。 (如果對SPA概念不清楚的同學(xué)可以先自行了解相關(guān)概念) 平時喜歡做點(diǎn)小頁面來玩玩,并且一直采用單頁面應(yīng)用(Single Page Appl...
摘要:單頁面應(yīng)用的出現(xiàn)依然存在著爭議性,我們該如何看待他的兩面性呢接下來小生給大家總結(jié)一下他的優(yōu)缺點(diǎn)。單頁面應(yīng)用的優(yōu)勢無刷新體驗沒有了令人詬病的頁面頻繁刷新,同時節(jié)約瀏覽器資源,路由響應(yīng)比較及時,提升了用戶的體驗。 前端猿一天不學(xué)習(xí)就沒飯吃了,后端猿三天不學(xué)習(xí)仍舊有白米飯擺于桌前。IT行業(yè)的快速發(fā)展一直在推動著前端技術(shù)棧在不斷地更新?lián)Q代,前端的發(fā)展成了互聯(lián)網(wǎng)時代的一個縮影。而單頁面應(yīng)用的發(fā)展...
閱讀 1563·2021-09-22 15:52
閱讀 1665·2019-08-30 15:44
閱讀 972·2019-08-30 14:24
閱讀 2780·2019-08-30 13:06
閱讀 2814·2019-08-26 13:45
閱讀 2850·2019-08-26 13:43
閱讀 1097·2019-08-26 12:01
閱讀 1623·2019-08-26 11:56