ブログに戻る

AngularインターセプターによるHTTPリクエストの管理とエラーハンドリング

AngularインターセプターによるHTTPリクエストの管理とエラーハンドリング

これまでAngularJSを使ってアプリケーションを開発してきたなら、おそらくHTTPインターセプターについてはご存知でしょう。しかし、これらのHTTPインターセプターは、バージョン4.3になるまでAngularでは利用できませんでした。このチュートリアルでは、Angularでインターセプターを使用してHTTPリクエストとレスポンスを処理し、エラーを処理します。

前提条件

Angularアプリケーションは、Node.jsランタイムを使用します。このチュートリアルを完了するには、マシンにNode.jsがインストールされている必要があります。幸いなことに、Node.jsのインストールは非常に簡単です。こちらのUbuntu 18.04にNode.jsをインストールする方法.

に完全なガイドがあります。さらに、Angularを理解しており、Angularアプリケーションを構築するためにAngular CLIを使用することに慣れていると役立ちます。今回はNode v8.12.0とnpm v6.4.1を使用します。

ステップ1:Angularアプリの作成

まず、Angular CLIを使用して新しいAngularアプリを作成しましょう。アプリケーションの名前は Angular-Interceptorとします。アプリを作成するには、以下のコマンドを実行します:

いくつかの選択肢を求められます。デフォルト値を入力して進めてください:

ang cli Angular Interceptors

次に、アプリケーションのディレクトリに移動し、以下のコマンドを実行してアプリケーションを起動します:

ng serve Angular Interceptors

その後、ブラウザで http://localhost:4200にアクセスしてアプリを確認します。これで基本的なAngularアプリが設定されました。

ステップ2:Angularアプリのスタイリング

ここでは、Angular Materialを使用してAngularアプリをスタイリングします。プロジェクトにAngular Materialをインストールするには、以下のコマンドを実行します:

これにより、プロジェクトに @angular/material, @angular/cdk、および @angular/animationがインストールされます。次に、プロジェクトでアニメーションを設定します。 BrowserAnimationsModulesrc/app/module.tsファイルに追加します:

Angular Material of Dialogコンポーネントを使用します。Dialogコンポーネントを使用するには、 MatDialogModulesrc/app/app.module.tsファイルにインポートする必要があります:

UIをより魅力的にするために、 indigo-pink.cssstyles.scssファイルに追加しましょう:

ステップ3:Angularインターセプターの構築

Under the appフォルダの下に、 interceptorという新しいフォルダを作成します。この新しく作成したフォルダの中に、新しい httpconfig.interceptor.tsファイルを作成します。

インターセプターを機能させるには、 httpconfig.interceptor.tsにいくつかの依存関係をインポートする必要があります。これらの依存関係は、 HttpInterceptor, HttpRequest, HttpResponse、および HttpHandler, HttpEvent, HttpErrorResponse.

インポート後の httpconfig.interceptor.tsファイルは以下のようになります:

次に、クラス HttpConfigInterceptorを作成し、次のインターフェースを実装します: HttpInterceptor. これは例です:

以下のコードを httpconfig.interceptor.ts ファイルに追加します:

動作させるには、 httpconfig.interceptor.tsを、 app.module.ts ファイルにインポートする必要があります:

Add HttpConfigInterceptorprovidersに追加します。複数のインターセプターを処理するために、 multi: をtrueに設定します:

次のセクションでは、エラーを処理するためのサービスを作成します。

ステップ 4: エラー処理用のサービス

ここでは、エラーを処理するためのコードを記述します。エラーをキャプチャし、エンドユーザーに適切に表示する必要があります。簡単に言うと、以下の手順に従います。

  1. Create a folder called error-dialogという名前のフォルダを、 app フォルダ内に作成します。
  2. Create a service for errors called errorDialogServiceというエラー用サービスを、次のファイル内に作成します: errordialog.service.ts.
  3. 以下のコードを errordialog.service.tsに追加します: :
その後、次の名前の新しいファイルを作成します。 errordialog.component.ts. このファイル内に以下のコードを追加します:
最後に、HTMLファイルを作成する必要があります。 errordialog.component.html, テンプレート用:
再度、 httpconfig.interceptor.ts ファイルを開いていくつかの変更を加える必要があります。これらの変更により、エラーをインターセプトできるようになります。

要約すると、手順は以下の通りです。

  1. まず、以下をインポートすることから始めます。 errordialog.service.
  2. 次に、以下のコンストラクタを追加します。 errorDialogService.
  3. また、以下を使用してエラーレスポンスを処理するコードも追加します。 catchError および throwError.
  4. 以下をインポートします。 errordialog.service および errordialog.component を以下にインポートします。 AppModule.

変更が完了すると、次の2つのファイルが修正されます。 app.module.ts および httpconfig.interceptor.ts:

ステップ 5: サンプルサービスの作成

このステップでは、サンプルとして2つのサービスを作成します:

  1. ログインAPI
  2. 顧客詳細API

という名前の新しいフォルダーをservicessrc フォルダー内)に作成します。次に、この新しく作成したフォルダー内に、 という名前の新しいファイルを作成します。login.service.ts。そして、2つの関数を追加します:

ステップ 6: HTTPクライアントサービスの呼び出し

いよいよ、チュートリアルの最後の部分です。HTTPサービスを app.component.ts ファイルから呼び出します。2つの LoginService 関数を app.component.ts に追加します。onloadでログインAPIを呼び出し、customers/detailsを onclick で呼び出します。:

次に、UI要素を app.component.htmlに追加して、ユーザーがクリックできるようにする必要があります:

完了するには、 LoginServiceprovidersAppModule内)に含める必要があります。:

以下に、エラーハンドラーダイアログのスクリーンショットを示します。

error

結論

このチュートリアルでは、Angularのインターセプターを使用してHTTPリクエストとレスポンスを処理する方法を学びました。また、Angular Materialのダイアログを使用してエラーを処理する方法についても学びました。

AngularアプリはランタイムとしてNode.jsを使用します。Node.jsの詳細や、Docker上でNode.jsアプリケーションをデプロイする方法について詳しく知りたい場合は、こちらのUbuntu 20.04でDockerを使用してNode.js (Express.js) アプリをデプロイする方法 ガイドをご覧ください。また、Ubuntu 20.04でNode.jsを使用して本番タスクを実行する方法 や、CentOS 8へのNode.jsのインストール:完全ガイド.

ハッピーコンピューティング!

author

Pranay Kapgate

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。