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 4(三)【指令】AngularJS
- AngularJS 4(五)【管道】AngularJS
- AngularJS 4(七)【路由】AngularJS路由
- 文章來源:AngularJS 1.x系列:AngularJS服務-Service、Factory、Provider、Value及Constant(5)AngularJSIDE
- HTTP檔案服務HTTP
- Angular2 http服務AngularHTTP
- http 服務原始碼分析HTTP原始碼
- http服務原始碼分析HTTP原始碼
- python 啟動http服務PythonHTTP
- 使用swoole提供http服務HTTP
- AngularJS 4(一)【搭建環境】AngularJS
- AngularJS 4(六)【依賴注入】AngularJS依賴注入
- go微服務系列(三) - 服務呼叫(http)Go微服務HTTP
- python內建HTTP服務(SimpleHTTPServer)PythonHTTPServer
- 快速搭建本地HTTP/2服務HTTP
- nginx代理http2服務NginxHTTP
- python http服務怎麼搭建PythonHTTP
- nestjs搭建HTTP與WebSocket服務JSHTTPWeb
- AngularJS 4(二)【模版語法,元件】AngularJS元件
- node.js啟動http服務Node.jsHTTP
- 14、Workerman案例1-Http服務HTTP
- 【CuteJavaScript】Angular6入門專案(4.改造元件和新增HTTP服務)JavaScriptAngular元件HTTP
- AngularJS、 Angular 2、Angular 4 的區別AngularJS
- go微服務系列(四) - http api中引入protobufGo微服務HTTPAPI
- 服務之間的呼叫 HTTP代替RPC?HTTPRPC
- 使用nodejs和express搭建http web服務NodeJSExpressHTTPWeb
- [服務端與網路]http協議與http狀態碼服務端HTTP協議
- Angularjs——初識AngularJSAngularJS
- 小白入門微服務(4) - 服務註冊與服務發現微服務
- 小白入門微服務(4) – 服務註冊與服務發現微服務
- dotnet core高吞吐Http api服務元件FastHttpApiHTTPAPI元件AST
- Mac 下搭建Nginx HTTP/2的服務端MacNginxHTTP服務端
- 《springcloud 四》服務保護機制SpringGCCloud
- Kubernetes學習筆記(四):服務筆記
- gRPC學習之四:實戰四類服務方法RPC
- AngularJs with Webpackv1 升級到 Webpack4AngularJSWeb
- 微服務4:服務註冊與發現微服務