セットアッププロジェクトとFASTIFYプラットフォーム-パスポート


このシリーズでは、ソーシャルAuthとJWTを使ってパスポートを使った認証システムを作成します.完全な認証システムを作成するためにNESTJS +パスポート+ Fastifyの組み合わせを使用してみましょう.
したがって、この最初の部分では、我々は空白のプロジェクトから始めて、Fastifyプラットホームを使用して、NESTJSがどのように働くかについて理解します.

NESTJSとは
NESTJSは効率的でスケーラブルなノードを構築するためのフレームワークです.JSサーバー側アプリケーション.それはExpressやFastifyのような堅牢なHTTPサーバのフレームワークを使用します.NESTJSは、共通のノードの上に抽象化のレベルを提供します.JSフレームワークは、開発者にAPIを公開します.これはサードパーティ製のモジュールを使用する自由の大きな量を与える.
スケーラブル、テスト可能、および疎結合アプリケーションを書くために使用されます.これはPostgreSQL、MongoDB、MySQLのようなデータベースをサポートしています.

プロジェクト開始
私たちは@nestjs/cli スタータープロジェクトを作成し、プロジェクトで使用しないときにファイルをクリアします.詳細を見たい場合は公式ドキュメントをチェックしてください.
まず、インストール@nestjs/cli グローバルにお使いのコンピュータと空のプロジェクトを初期化します.私はパッケージをインストールするための糸を使用することをお勧めしますが、パッケージマネージャの好みを選択することができます.
yarn global add @nestjs/cli
nest new nest-auth
そして、フォルダにアクセスして、vscode(または、あなたが好むならば、もう一つのエディタ)で動きます.
cd nest-auth
code .
下のイメージでは、アプリケーションモジュール、コントローラ、およびサービスがあるときに、ファイル構造が表示されます.


NESTJSにおけるブロックの型
モジュール:コードを整理し、論理再利用可能なユニットに分割機能を使用します.グループ化されたtypescriptファイルは、アプリケーション構造を組織するためにNESTJSが使用するメタデータを提供する「@ module」デコレータで飾られます.
プロバイダー:また、複雑さと論理のどんな形でも抽象化するように設計されているサービスと呼ばれます.プロバイダを作成することができますし、コントローラや他のプロバイダに注入.
コントローラ:着信要求を処理して、アプリケーションのクライアント側(例えばAPIへの呼び出し)に適切な応答を返すことに責任があります.

プラットフォームの設定
このプロジェクトでは、FASTIFYを使用することを選択するよりもはるかに優れたパフォーマンスと機能を表現するよりも.

Fastify provides a good alternative framework for Nest because it solves design issues in a similar manner to Express. However, fastify is much faster than Express, achieving almost two times better benchmarks results. A fair question is why does Nest use Express as the default HTTP provider? The reason is that Express is widely-used, well-known, and has an enormous set of compatible middleware, which is available to Nest users out-of-the-box.


では設定しましょうmain.ts Fastifyを使用する場合、プラットフォームを設定します.
まず、必要なパッケージをインストールする必要があります.
yarn add @nestjs/platform-fastify
src/main.ts インポートFastifyAdapter and NestFastifyApplication を初期化するNestFactory.create .
// src/main.ts

import { NestFactory } from '@nestjs/core';
import {
  FastifyAdapter,
  NestFastifyApplication,
} from '@nestjs/platform-fastify';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create<NestFastifyApplication>(
    AppModule,
    new FastifyAdapter()
  );
  await app.listen(3000);
}
bootstrap();
我々はこれ以上の設定を必要としない、今Fastify設定され、使用する準備が整いました👏

初ルート
プロジェクトを作るとき@nestjs/cli これは、例のルートを作成しますので、そのルートを使用して設定をテストします.次のチュートリアルでは、ルートがNESTJSでどのように動作するかを説明します.現在、我々はFastifyが働いているかどうか知りたいです.
オープンapp.controller ファイルを取得します/ 使用するパスhttp://localhost:3000/ サーバの実行getHello 関数を返します.AppService
// src/app.controller.ts

import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
The AppService という方法getHello を返すHello World
// src/app.service.ts

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}
それで、このルートのためにPostmanを使用して要求を送りましょう

グッドニュース👏

ロガー
あなたが1つのリクエストを送るログを常に取得したいならば、あなたは中でこのオプションをセットすることができますFastify Adapter
// src/main.ts

async function bootstrap() {
  const app = await NestFactory.create<NestFastifyApplication>(
    AppModule,
    new FastifyAdapter({ logger: true }),
  );

  await app.listen(3000);
}
bootstrap();
以下にこのオプションを使用する例を示します


今度まで
それは、我々がこの記事でカバーするつもりです、我々はNESTJSについて理解して、我々のプロジェクトが成長する初期のセットアップをしました.次のシリーズでは、Prisma、Docker、PostgreSQLを使用してデータベースを構成します.
読んでくれてありがとう!
リポジトリをコンサルティングコードに従ってください

mnzsss / nest-auth-explained
🔒 認証を使用してJWTとGoogleを使用して認証.js説明

参考文献
  • NestJs Documentation
  • Why Choose NestJS As Your Backend Framework?