亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Angular2 http jsonp的實例詳解

2019-11-19 15:35:50
字體:
來源:轉載
供稿:網友

Angular2 Http

1. 使用Http

絕大部分應用程序都會和后臺服務打交道,Http是瀏覽器和服務器之間通訊的主要協議,通過Http調用來訪問遠程服務器上相應的 Web API。

HttpModule 并不是 Angular 的核心模塊,通過Angular包中一個名叫 @angular/http 的獨立附屬模塊發布了出來。我們的應用將會依賴于Angular的 http 服務,它本身又依賴于其它支持類服務。來自 @angular/http 庫中的 HttpModule 保存著這些 HTTP 相關服務提供商的全集。

現代瀏覽器支持兩種基Http的API : XMLHttpRequest (XHR) 和 JSONP 。少數瀏覽器還支持 Fetch 。在Angular中分別對應@angular/http 庫中的HttpModule 和JsonpModule兩個模塊。

2. GET獲取數據

為了能夠使用XHR中的Get方法來獲取數據信息,我們把 HttpModule 添加到 AppModule 的 imports 列表中,這樣本應用程序的任何地方都可以訪問XHR服務。

我們使用Http服務的實例中的get方法來執行http get方法獲取數據,該方法的調用形式如下

get(url: string, options?: RequestOptionsArgs) : Observable<Response> 

來看一個簡單的例子,代碼如下

@Component({ selector: 'demo', template: '<button id="input" (click)="click()">Get Data</button>', }) export class DemoComponent { constructor(private http: Http) { } url: string = '/api/list'; click() { this.http.get(this.url).subscribe(function (data) { console.log(data) }) } } 

我們在DemoComponent構造函數中采用DI獲取了Http服務的實例http,當點擊獲取數據的按鈕后,便能夠通過Http實例中的get方法,根據其參數url地址及options?: RequestOptionsArgs參數來獲取對應的數據信息。該方法返回的是一個可觀察對象 (Observable),針對可觀察對象,我們可以subscribe對應的方法,當數據返回后進行處理。

3. POST發送數據

同樣的,為了能夠使用XHR中的POST方法來獲取數據信息,我們把 HttpModule 添加到 AppModule 的 imports 列表中,這樣本應用程序的任何地方都可以訪問XHR服務。

我們使用Http服務的實例中的post方法來執行http post方法獲取數據,該方法的調用形式如下

post(url: string, body: any, options?: RequestOptionsArgs) : Observable<Response> 

來看一個簡單的例子,代碼如下

@Component({ selector: 'demo', template: '<button id="input" (click)="click()">Get Data</button>', }) export class DemoComponent { constructor(private http: Http) { } url: string = '/api/post'; click() { let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOptions({ headers: headers }); this.http.post(this.url, JSON.stringify({ 'id': '1' }), options).subscribe(function (data) { console.log(data) }) } } 

我們在DemoComponent構造函數中采用DI獲取了Http服務的實例http,當點擊獲取數據的按鈕后,便能夠通過Http實例中的get方法,根據其參數url地址, body:any及options?: RequestOptionsArgs參數來提交對應的數據信息,其中body表示傳遞到服務器端的數據信息。示例中,我們傳遞json格式的數據到服務器端,所以使用了'Content-Type': 'application/json'頭信息進行包裝。

該方法返回的是一個可觀察對象 (Observable),針對可觀察對象,我們可以subscribe對應的方法,當數據返回后進行處理。

4. JSONP獲取數據

用 Angular Http 服務發起 XMLHttpRequests,是與服務器通訊時最常用的方法。但它不適合所有場景。

出于安全的考慮,網絡瀏覽器會阻止調用與當前頁面不“同源”的遠端服務器的XHR。所謂源就是 URI 的協議 (scheme) 、主機名 (host) 和端口號 (port) 這幾部分的組合。這被稱為同源策略。

為了可以向不同源的服務器發起 XHR 請求,這時候就需要支持一種老的、只讀的 ( 譯注:即僅支持 GET) 備選協議,這就是 JSONP。

為了能夠使用JSONP中的Get方法來獲取數據信息,我們把 JsonpModule 添加到 AppModule 的 imports 列表中,這樣本應用程序的任何地方都可以訪問Jsonp服務。

Angular的Jsonp服務不但通過JSONP 擴展了Http 服務,而且限制我們只能用GET請求,調用的形式如下。

get(url: string, options?: RequestOptionsArgs) : Observable<Response> 

我們來看一個例子,該示例和Http Get訪問十分類似,

@Component({ selector: 'demo', template: '<button id="input" (click)="click()">Get Data</button>', }) export class DemoComponent { constructor(private jsonp: Jsonp) { } url: string = '/api/list'; click() { this.jsonp.get(this.url).subscribe((data) => { console.log(data); }); } } 

5. 結果處理

5.1 可觀察對象

我們通過Http以及Jsonp的api接口可以知道,默認返回值都是可觀察對象 Observable< Response >??梢园芽捎^察對象 Observable 看做一個由某些“源”發布的事件流。 通過 訂閱 到可觀察對象 Observable ,我們監聽(subscribe)這個流中的事件。 在這些訂閱中,我們指定了當 Web 請求生成了一個成功事件 ( 有效載荷是英雄數據 ) 或失敗事件 ( 有效載荷是錯誤對象 ) 時該如何采取行動,如示例中所示。

我們的服務可以返回 HTTP 響應對象Response。但這可不是一個好主意! 數據服務的重點在于,對消費者隱藏與服務器交互的細節。其實上,我們最關心的還是獲取到的返回數據信息,這時候我們就可以利用RxJS庫來對事件流進行一些額外的處理。

RxJS("Reactive Extensions" 的縮寫)是一個被 Angular 認可的第三方庫,它實現了異步可觀察對象 (asynchronous observable) 模式。Rxjs庫中包含很多對事件流進行處理的方法,例如map,distinctUntilChanged等操作符。

針對返回數據是json格式的響應對象,可以把Response解析成 JavaScript 對象――只要調一下 response.json() 就可以了,這時候我們就可以利用map操作符來進行處理,例如

this.jsonp.get(this.url) .map((rsp:Response)=>{ return rsp.json() }) .subscribe((data) => { console.log(data); }); 

5.2 Promise

雖然 Angular 的 http 客戶端 API 返回的是 Observable<Response> 類型的對象,但我們也可以把它轉成 Promise<Response>。這很容易,只需要調用可觀察對象 Observable< Response >的方法toPromise()就能夠進行轉化。例如

this.jsonp.get(this.url) .toPromise() .then((rsp: Response) => { console.log(rsp) });

以上就是對Angular http json的講解,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品中文字幕一区| 亚洲欧洲免费视频| 色综合久久精品亚洲国产| 日韩av中文字幕在线播放| 日韩av日韩在线观看| 日韩在线观看免费全| 2019亚洲日韩新视频| 亚洲国产福利在线| 日韩中文在线视频| 中文字幕精品av| 在线观看欧美日韩| 久久视频在线免费观看| 久久在线免费观看视频| 亚洲自拍欧美另类| 国产在线拍偷自揄拍精品| 91在线精品播放| 中文字幕欧美精品日韩中文字幕| 日本道色综合久久影院| 在线成人免费网站| 91精品国产91久久久久久| 欧美大人香蕉在线| 成人淫片在线看| 亚洲欧美国产另类| 国产精品精品视频一区二区三区| 亚洲丝袜在线视频| 亚洲国产女人aaa毛片在线| 欧美成aaa人片在线观看蜜臀| 欧美激情精品久久久久久大尺度| 国产成人精品亚洲精品| 成人黄色激情网| 国产一区二区三区欧美| 成人看片人aa| 97国产成人精品视频| 欧美一级黑人aaaaaaa做受| 久久视频这里只有精品| 国产精品白嫩初高中害羞小美女| 丝袜亚洲另类欧美重口| 亚洲精品国产精品国产自| 51色欧美片视频在线观看| 欧美成人精品一区二区三区| 亚洲人成网站777色婷婷| 亚洲精品成人久久电影| 亚洲精品电影久久久| 欧美日韩中文字幕综合视频| 日韩不卡在线观看| 国产精品美女主播在线观看纯欲| 欧美一区二区三区免费观看| 国产美女久久精品香蕉69| 免费成人高清视频| 中文字幕日韩精品有码视频| 日本精品久久久久影院| 国色天香2019中文字幕在线观看| 欧日韩在线观看| 成人xvideos免费视频| 一本色道久久综合狠狠躁篇怎么玩| 精品亚洲永久免费精品| 亚洲一区二区三区四区视频| 成人有码在线视频| 国产精品入口日韩视频大尺度| 黄色一区二区在线| 国产成人精品国内自产拍免费看| 国产色综合天天综合网| 精品一区二区电影| 中文字幕日韩欧美在线视频| 欧美尺度大的性做爰视频| 亚洲最大激情中文字幕| 欧美成人午夜剧场免费观看| 日韩视频免费在线观看| 亚洲精品资源美女情侣酒店| 欧美激情精品久久久久久久变态| 精品日韩美女的视频高清| 97久久精品人搡人人玩| 亚洲另类图片色| 日本亚洲欧洲色| 91精品久久久久久久久久另类| 久久久久久久久久久人体| 92裸体在线视频网站| 欧美中文字幕第一页| 日韩av在线看| 欧美黑人xxx| 欧美午夜无遮挡| 中文在线资源观看视频网站免费不卡| 欧美在线一级va免费观看| 欧美亚州一区二区三区| 国产亚洲一区二区在线| 成人黄色免费在线观看| 国产xxx69麻豆国语对白| 国产精品入口尤物| 成人黄色免费在线观看| 91精品国产99久久久久久| 久久人91精品久久久久久不卡| 黄色精品一区二区| 国模叶桐国产精品一区| 国产精品自拍偷拍| 精品久久久香蕉免费精品视频| 欧美一区二粉嫩精品国产一线天| 精品成人乱色一区二区| 亚洲老头同性xxxxx| 久久在线精品视频| 亚洲加勒比久久88色综合| 55夜色66夜色国产精品视频| 欧美激情综合亚洲一二区| 亚洲女人初尝黑人巨大| 久久久久久久久久国产精品| 久久亚洲精品一区二区| 国产成人啪精品视频免费网| 神马久久桃色视频| 亚洲va码欧洲m码| 91精品国产综合久久男男| 亚洲男人天堂久| 欧美理论在线观看| 欧美一级视频在线观看| 久久成人精品视频| 在线播放国产一区中文字幕剧情欧美| 日韩成人网免费视频| 大量国产精品视频| 69国产精品成人在线播放| 欧美亚洲第一区| 日韩av快播网址| 久久久人成影片一区二区三区观看| 亚洲在线免费视频| 性欧美激情精品| 69国产精品成人在线播放| 国产午夜精品视频免费不卡69堂| 欧美性感美女h网站在线观看免费| 国产精品成人观看视频国产奇米| 国产精品色婷婷视频| 欧美丝袜美女中出在线| 国产日本欧美一区二区三区在线| 国产综合在线观看视频| 97人人爽人人喊人人模波多| 久久人人爽人人爽爽久久| 欧美日韩在线另类| 91美女片黄在线观看游戏| 国产精品jvid在线观看蜜臀| 97视频在线播放| 91高清免费视频| 2019中文字幕全在线观看| 亚洲aⅴ男人的天堂在线观看| 色午夜这里只有精品| 一区二区在线视频| 一本色道久久综合狠狠躁篇的优点| 亚洲人成电影在线播放| 国产一区视频在线播放| 2019最新中文字幕| 欧美亚洲第一页| 欧美高清理论片| 亚洲电影免费观看高清完整版| 尤物九九久久国产精品的分类| 国产日本欧美一区二区三区在线| 久久天天躁狠狠躁夜夜躁2014| 亚洲精品黄网在线观看| 91在线中文字幕| 国产日韩欧美视频在线| 久久久黄色av| 亚洲免费人成在线视频观看| 91久久久久久久久久久| 亚洲影院色在线观看免费| 久久99国产精品自在自在app| 亚洲免费视频在线观看| 欧美在线精品免播放器视频| 欧美一级大片在线免费观看| 在线国产精品视频| 红桃av永久久久|