NestJS

NestJSとは?

Node.js向けWebアプリケーションフレームワーク(フルスタックフレームワーク)です。

f:id:adrenaline2017:20191209104727p:plain

構成

NestJSの基本構成は以下の通りです。

①メイン(main.ts)

起動する際に一番はじめに読み込まれるメインファイルになります。

②モジュール(app.module.ts)

コントローラとサービスを受け取る器の様なものです。

③コントローラー(app.controller.ts)

リクエストを受け取りレスポンスを返します。

④プロバイダ(app.service)

機能やデータを扱うビジネスロジックを定義します。

①メイン(main.ts)

アプリを起動させる時に一番はじめに読み込まれるファイルです。 NestFactory.createに引数としてモジュールを渡し、Nestアプリケーションのインスタンスを作成します。作成したインスタンスを使ってポート3000で接続を待ち受けます。

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

②モジュール(app.module.ts)

使用するコントローラとサービスをモジュールで受け取ります。 アプリケーションのルートモジュールであるAppModuleを定義します。

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

// モジュールの構成を宣言
@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})

// モジュールクラスの定義
export class AppModule {}

③コントローラー(app.controller.ts)

コントローラーはコントローラーデコレーター(@Controller)を使ってHTTPリクエストを受け取りレスポンスを返します。

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

// 3000へのルーティングを定義している
@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

// リクエスト(./app.service)を受け取ってレスポンスを返す
@Get()
  root(): string {
    return this.appService.root();
  }
}

④プロバイダ(app.service.ts)

コンポーネントでDBとやりとりするためのORMなどをここに書きます。コントローラーにDIする為に@Injectableコンストラクタを使用します。

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

// AppServiceクラスでgetHello関数を定義
@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}