1. ホーム
  2. アンギュラー

[解決済み】HttpModuleとHttpClientModuleの違いについて

2022-04-04 11:17:56

質問

Angular 4アプリをテストするためにモックWebサービスを構築するには、どれを使用すればよいですか?

どのように解決するのですか?

を使用します。 HttpClient クラスから HttpClientModule は、Angular 4.3.x 以降を使用している場合に使用します。

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

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

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

のアップグレード版です。 http から @angular/http モジュールに以下の改良を加えました。

  • インターセプターにより、ミドルウェアのロジックをパイプラインに挿入することが可能
  • イミュータブルなリクエスト/レスポンスオブジェクト
  • リクエストのアップロードとレスポンスのダウンロードの両方に対する進行状況イベント

その仕組みは、以下のページでご覧いただけます。 AngularのインターセプターとHttpClientの仕組みについてのインサイダーガイド .

<ブロッククオート
  • JSONボディタイプのサポートを含む、型付き同期レスポンスボディへのアクセス
  • JSONはデフォルトとして想定されているため、明示的にパースする必要がない
  • ポストリクエスト検証 & フラッシュベースのテストフレームワーク

今後、古いhttpクライアントは非推奨となる予定です。以下は、そのリンク先です。 コミットメッセージ 公式ドキュメント .

また、古い http を注入するために Http クラス・トークンの代わりに、新しい HttpClient :

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

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

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

また、新たに HttpClient が必要なようです。 tslib を実行時にインストールする必要があります。 npm i tslib を更新し system.config.js を使っている場合は SystemJS :

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

また、SystemJSを使用する場合は、別のマッピングを追加する必要があります。

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