2017-07-16 79 views
131

Chciałbym wiedzieć, który z nich użyć do stworzenia fałszywej usługi sieci Web w celu przetestowania programu Angular?Różnica między HTTP a HTTPClient w kanciastym 4?

+5

[* "HttpClient jest ewolucją istniejącego Kątowymi API HTTP, który istnieje obok niego w osobnym opakowaniu ..." *] (https://github.com/angular/angular/commit/37797e2). – jonrsharpe

+1

Właściwie napisałem o niektórych nowych funkcjach na moim blogu: http://blog.jonrshar.pe/2017/Jul/15/angular-http-client.html – jonrsharpe

+4

https://angular.io/guide/http – yurzui

Odpowiedz

209

Użyj klasę HttpClient z HttpClientModule jeśli używasz kątowa 4.3.x oraz powyżej:

import { HttpClientModule } from '@angular/common/http'; 

@NgModule({ 
imports: [ 
    BrowserModule, 
    HttpClientModule 
], 
... 

class MyService() { 
    constructor(http: HttpClient) {...} 

Jest to ulepszona wersja http z modułem @angular/http następujące ulepszenia:

  • Interceptory umożliwiają wstawienie logiki oprogramowania pośredniego do potoku
  • Niezmienne żądanie/odpowiedź ob przedmiot badania
  • wydarzenia Progress zarówno dla wysyłania żądań i odpowiedzi pobierz

można przeczytać o tym, jak to działa w Insider’s guide into interceptors and HttpClient mechanics in Angular.

  • wpisane, synchroniczny dostęp ciało odpowiedź, w tym wsparcie dla typów nadwozia JSON
  • JSON jest założyć domyślna i nie musi być wyraźnie analizowany
  • Post-prośba ramy badania oparte weryfikacja & równo

Idąc dalej stary klient HTTP będzie przestarzały. Oto linki do commit message i the official docs.

zapłacić również uwagę, że stary http wstrzyknięto używając Http klasy tokenu zamiast nowego HttpClient:

import { HttpModule } from '@angular/http'; 

@NgModule({ 
imports: [ 
    BrowserModule, 
    HttpModule 
], 
... 

class MyService() { 
    constructor(http: Http) {...} 

Również nowy HttpClient wydają się wymagać tslib w czasie wykonywania, więc trzeba go zainstalować npm i tslib i aktualizować system.config.js jeśli używasz SystemJS:

map: { 
    ... 
    'tslib': 'npm:tslib/tslib.js', 

A trzeba dodać kolejny mapowanie jeśli używasz SystemJS:

'@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js', 
+0

Próbuję zaimportować HttpClientModule. Ale "@kamular/common/http" nie występuje w katalogu node_modules, który został zainstalowany za pomocą polecenia "npm start". Możesz pomóc? –

+1

@DheerajKumar, której wersji używasz? jest dostępny tylko w wersji 4.3.0 i wyższej niż –

+0

Pobrałem kątowy szybki start z git. i In package.json, "@ kątowy/wspólny": "^ 4.3.0" jest obecny. ale nie ma @ angle/common/http. –

13

Nie chcemy być powtarzalne, ale po prostu podsumować w inny sposób:

  • Automatyczna konwersja z formatu JSON do obiektu
  • definicja typu odpowiedzi
  • Zdarzenie wypalania
  • Uproszczona składnia nagłówków
  • Interceptory

Napisałem artykuł, w którym omówiłem różnicę między starym "http" a nowym "HttpClient". Celem było wyjaśnienie go w najprostszy możliwy sposób.

Simply about new HttpClient in Angular