Angular HTTP请求

为了从我们的Angular应用程序开始进行HTTP调用,我们需要从@angular/common/http中导入 HTTP 模块。

import {HttpClientModule} from '@angular/common/http';
@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        HttpClientModule
    ],
    providers: [],
    bootstrap: [AppComponent]
})
export class AppModule {}

⚡️HttpClient 是 Angular2 HTTP 的升级版,在4.3版本引入。默认解析JSON,所以我们不需要再进行显式的解析。即我们不需要再使用以下代码:

http.get(url).map(res => res.json()).subscribe(...)

要发出HTTP请求,我们将使用Http服务。在本示例中,我们创建了一个SearchService以与Spotify API进行交互。

我们通过HttpHeaders设置HTTP头,HttpParams设置请求参数

import { HttpClient, HttpParams } from "@angular/common/http";
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
@Injectable()
export class SearchService {
  constructor(private http: HttpClient) {}
  search(term: string) {
    const params = new HttpParams()
                    .set('q', term)
                    .set('type', "artist");
    return this.http
      .get('https://api.spotify.com/v1/search',{params})
      .map()
      .subscribe()
  }
}

这里我们做一个HTTP GET请求,它作为一个可观察者暴露给我们。 你会注意到.map操作符被链接到.subscribe

除了get,还有post, put,patchdelete方法,他们都返回observables。