nestjs_nomad_02.init nestjs


  • nestjs/cliインストール
  • sudo npm i -g @nestjs/cli
  • プロジェクト
  • の作成
    nest new
  • レコーダ
    nestjsで最も重要な概念です.
    @で始まり、classに従属する
    (ニコラスによると、アイスクリームから出たチョコレートチップのような存在)
  • @Module({
      imports: [],
      controllers: [AppController],
      providers: [AppService],
    })
    export class AppModule {}
  • フォルダ構造
  • main.ts:始点
    app.module.ts:ルートモジュール
    app.controller.ts:urlを取得し、expressのルータなどの関数を実行します.
    app.service.ts:
  • app.controller.ts
  • @Get(get decorator)->expressのgetルータなどのロール
  • 関数は、クラスとともに使用する必要があります(触れないでください)
  • @Controller()
    export class AppController {
    
      @Get('/hello')
      sayhello(): string {
        return "hello everyone"
      }
    }

  • nestjsはすべての機能をサポートしているので、routerを設定する必要はありません.urlで関数を実行するだけです.

  • post、putなどのデコーダによる多様な通信

  • @postで間違った通信が設定されている場合、nestjsは自分でエラー処理を行います
  • エラー処理
  • app.service.ts
  • import { Controller, Get, Post } from '@nestjs/common';
    import { AppService } from './app.service';
    
    @Controller()
    export class AppController {
      constructor(private readonly appService: AppService) {}
    
      @Get()
      getHello(): string {
        return this.appService.getHello();
      }
      @Get('/hello')
      sayhello(): string {
        return "hello everyone"
      }
    }
  • デコーダで通信できるのに、なぜサービスを参考にするのですか?
  • nestjsはビジネスロジックとコントローラを区別したいからです.したがって、実際の関数、ビジネスロジックはサービスにあります.
    app.service.ts
    import { Injectable } from '@nestjs/common';
    
    @Injectable()
    export class AppService {
      getHello(): string {
        return 'Hello Nest!';
      }
      getHi(): string {
        return 'Hi Nest!'
      }
    }
    app.controller.ts
    @Controller()
    export class AppController {
      constructor(private readonly appService: AppService) {}
    
      @Get()
      getHello(): string {
        return this.appService.getHello();
      }
      @Get('/hello')
      sayhello(): string {
        return this.appService.getHi()
      }
    }