AngularJS 4(四)【HTTP 服務】
提供 HTTP 服務
HttpModule
並不是 Angular 的核心模組。 它是 Angular 用來進行 Web 訪問的一種可選方式,並位於一個名叫 @angular/http
的獨立附屬模組中,並作為 Angular 的 npm
包之一而釋出出來。
註冊 HTTP 服務
我們的應用將會依賴於 Angular 的http服務,它本身又依賴於其它支援類服務。 來自@angular/http庫中的HttpModule儲存著這些 HTTP 相關服務提供商的全集。
我們要能從本應用的任何地方訪問這些服務,就要把HttpModule
新增到AppModule
的imports
列表中。 這裡同時也是我們引導應用及其根元件AppComponent
的地方。
import { BrowserModule } from '@angular/platform-browser';
import {FormsModule} from '@angular/forms';
import { HttpModule } from '@angular/http';
@NgModule({
imports: [FormsModule, BrowserModule, HttpModule]
})
HTTP 服務的使用
Angular 的 http.get
返回一個 RxJS
的Observable
物件。Observable
(可觀察物件)是一個管理非同步資料流的強力方式。
import { Component} from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';
@Component({
selector: 'app-root',
template: '<h1>{{title}}</h1>',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit{
constructor(private http: Http) {
}
ngOnInit() {
this.http.get('api').subscribe((res) => {
console.log(res.json());
});
}
}
結果處理 - promise
方式
可以利用 toPromise
操作符把 Observable
物件直接轉換成 Promise
物件。不幸的是 Angular 的 Observable
只是一個骨架實現,並沒有一個 toPromise
操作符。所以要先從 RxJS 庫中匯入 。然後在 promise
的 then()
回撥中,我們呼叫 HTTP 的 Reponse
物件的 json
方法,用以提取出其中的資料。
import { Component} from '@angular/core';
import { Http } from '@angular/http';
//貌似現在最新本已一起打包釋出了,所以並不需要這一步
import 'rxjs/add/operator/toPromise';
@Component({
selector: 'app-root',
template: '<h1>{{title}}</h1>',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit{
constructor(private http: Http) {
}
ngOnInit() {
this.http.get('api').toPromise().then(response => {
console.log(response.json());
}).catch((error) => {
console.log(error);
return Promise.reject(error);
});
}
}
傳引數
import { Component} from '@angular/core';
import { Http, Response, Headers, RequestOptions, URLSearchParams, RequestOptionsArgs, RequestMethod } from '@angular/http';
//貌似現在最新本已一起打包釋出了,所以並不需要這一步
import 'rxjs/add/operator/toPromise';
@Component({
selector: 'app-root',
template: '<h1>{{title}}</h1>',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit{
constructor(private http: Http) {
}
ngOnInit() {
//get
this.http.request('api', new RequestOptions({
method: RequestMethod.Get,
search: {name: ''}
})).toPromise().then(response => {
console.log(response.json());
}).catch((error) => {
console.log(error);
return Promise.reject(error);
});
//get
this.http.request('api', new RequestOptions({
method: RequestMethod.Post,
body: {name: ''},
headers: new Headers({
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
})
})).toPromise().then(response => {
console.log(response.json());
}).catch((error) => {
console.log(error);
return Promise.reject(error);
});
}
}
相關文章
- AngularJS教程五—— 服務AngularJS
- 走進AngularJs(六) 服務AngularJS
- angularjs 錨點操作服務 $anchorScrollAngularJS
- AngularJS教程二十—— 內建服務AngularJS
- HTTP檔案服務HTTP
- http服務原始碼分析HTTP原始碼
- http 服務原始碼分析HTTP原始碼
- Angular2 http服務AngularHTTP
- 使用swoole提供http服務HTTP
- 資深架構師的 AngularJS服務架構AngularJS
- go微服務系列(三) - 服務呼叫(http)Go微服務HTTP
- 快速搭建本地HTTP/2服務HTTP
- nginx代理http2服務NginxHTTP
- python 啟動http服務PythonHTTP
- python http服務怎麼搭建PythonHTTP
- 14、Workerman案例1-Http服務HTTP
- nestjs搭建HTTP與WebSocket服務JSHTTPWeb
- angular中的$http服務(service)解析AngularHTTP
- node.js啟動http服務Node.jsHTTP
- AngularJS服務中serivce,factory,provider的區別AngularJSIDE
- AngularJS 1.x系列:AngularJS服務-Service、Factory、Provider、Value及Constant(5)AngularJSIDE
- AngularJS中的http攔截AngularJSHTTP
- 【CuteJavaScript】Angular6入門專案(4.改造元件和新增HTTP服務)JavaScriptAngular元件HTTP
- python內建HTTP服務(SimpleHTTPServer)PythonHTTPServer
- AngularJS 的常用特性(四)AngularJS
- 小白入門微服務(4) – 服務註冊與服務發現微服務
- 小白入門微服務(4) - 服務註冊與服務發現微服務
- AngularJS 4(三)【指令】AngularJS
- AngularJS 4(五)【管道】AngularJS
- AngularJS 4(七)【路由】AngularJS路由
- go微服務系列(四) - http api中引入protobufGo微服務HTTPAPI
- [服務端與網路]http協議與http狀態碼服務端HTTP協議
- 服務之間的呼叫 HTTP代替RPC?HTTPRPC
- Mac 下搭建Nginx HTTP/2的服務端MacNginxHTTP服務端
- 使用nodejs和express搭建http web服務NodeJSExpressHTTPWeb
- SSM(十三) 將dubbo暴露出HTTP服務SSMHTTP
- 文章來源:AngularJS 1.x系列:AngularJS服務-Service、Factory、Provider、Value及Constant(5)AngularJSIDE
- 微服務4:服務註冊與發現微服務