高瀬博道の技術ブログ

高瀬博道の技術ブログです。

もう2023年になったので、今さらNestJSに入門しようと思う - その21

前回 takasehiromichiex.com カスタムプロバイダを使用するケース カスタムプロバイダを使用するケースは、以下のようなものがあります。 Nestでクラスをインスタンス化する代わりにカスタムインスタンスを返す 2番目の依存関係で既存のクラスを再利用する …

もう2023年になったので、今さらNestJSに入門しようと思う - その20

前回 takasehiromichiex.com DIの基礎 依存性注入は、依存関係のインスタンス化を独自のコードで強制的に行うのではなく、IoCコンテナ、つまりNestJSランタイムシステムに移譲する制御の反転手法です。 まず、@Injectable()デコレータは、クラスをプロバイダ…

もう2023年になったので、今さらNestJSに入門しようと思う - その19

前回 takasehiromichiex.com デコレータ Nestは、デコレータを中心に構築されています。 デコレータは、@のプレフィックスをつけ、装飾するものの上に配置して適用します。 デコレータは、クラス、メソッド、プロパティにつけることができます。 パラメータ…

もう2023年になったので、今さらNestJSに入門しようと思う - その18

前回 takasehiromichiex.com nullを除外するインターセプタ null値が出現するたびに、空の文字列に変換するインターセプタを作成します。 $ nest g interceptor interceptor/excludeNull 以下のファイルが作成されました。 src/interceptor/exclude-null/exc…

もう2023年になったので、今さらNestJSに入門しようと思う - その17

前回 takasehiromichiex.com インターセプタのレスポンスマッピング handle()はObservableを返しますが、ストリームにはルートハンドラから返却された値が含まれているので、RxJSのmap()を使用して簡単に変更することができます。 新しいインターセプタを作…

もう2023年になったので、今さらNestJSに入門しようと思う - その16

前回 takasehiromichiex.com インターセプタ インターセプタは、@Injectable()デコレータがつけられたクラスで、NestInterceptorクラスを実装します。 インターセプタは、以下が可能です。 メソッド実行の前後に追加のロジックを実行する メソッドから返却さ…

もう2023年になったので、今さらNestJSに入門しようと思う - その15

前回 takasehiromichiex.com 実行コンテクスト canActivate()メソッドは、ExecutionContextインスタンスという1つの引数をとります。 ExecutionContextは、ArgumentsHostから継承します。 ArgumentsHostを拡張することで、ExecutionContextは、現在の実行プ…

もう2023年になったので、今さらNestJSに入門しようと思う - その14

前回 takasehiromichiex.com Guards ガードは、CanActivateインターフェースを実装する、@Injectable()デコレータがつけられたクラスです。 ガードの責任は、実行時に存在する特定の条件 (パーミッション、ロール、アクセスコントロールリストなど) に応じて…

もう2023年になったので、今さらNestJSに入門しようと思う - その13

前回 takasehiromichiex.com クラスバリデータを用いたパイプ Nestは、class-validatorライブラリと連携することができます。 このライブラリを使用すると、デコレータベースのバリデーションを使用できます。 ライブラリをインストールします。 $ npm insta…

もう2023年になったので、今さらNestJSに入門しようと思う - その12

前回 takasehiromichiex.com オブジェクトスキーマを検証するパイプ バリデーションの1つとして、スキーマベースのパイプを作成してみましょう。 joiライブラリを使用します。 $ npm install --save joi カスタムパイプを作成します。 $ nest g pipe pipe/Jo…