勉強する


目的


新しいカリキュラムのコアコンテンツの記録

内容


Nest Flow


main > module > controller > services
Controller
import {Body, Controller, Get, Param, Req} from '@nestjs/common';
import {AppService} from './app.service';
import {Request} from "express";

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

    @Get('hello/:id/:name')
    getHello(@Req() req: Request, @Body() Body, @Param() param: { id: string; name: string }): string {
        console.log(req);
        console.log(Body);
        console.log(param);
        return this.appService.getHello();
    }
}
Provider & DI
依存関係の注入、プロバイダにより、DIサービス、Knowledge Base、ファクトリ、アシスタント、およびほとんどのクラス
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
モジュール化とパッケージング
モジュールの作成

自動登録

Cliコマンド

コントローラ、サービスをCatModuleに注入

コントローラルーティング
import {Controller, Delete, Get, Patch, Post, Put} from '@nestjs/common';
import {CatsService} from "./cats.service";

('cats')
export class CatsController {
    constructor(private readonly catsService: CatsService) {
    }

    ()
    getAllCat() {
        return 'all cat';
    }

    (':id')
    getOneCat() {
        return 'one cat';
    }

    ()
    createCat() {
        return 'create cat';
    }

    ()
    putCat() {
        return 'update cat';
    }

    (':id')
    updatePartialCat() {
        return 'update partial cat';
    }

    (':id')
    deleteCat() {
        return 'delete services';
    }

}
カプセル化
デフォルトでは、モジュールはカプセル化されています.
親モジュールで使用するには、エクスポートする必要があります.

+a)
AppControllerでCatsServicesを使用する場合は、

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

@Injectable()
export class CatsService {
    hiCatServiceProduct() {
        return 'hello cat';
    }
}
サービスを作成します.
AppModuleでサービスを提供します.
import {Module} from '@nestjs/common';
import {AppController} from './app.controller';
import {AppService} from './app.service';
import {CatsModule} from './cats/cats.module';
import {UsersModule} from './users/users.module';
import {CatsService} from "./cats/cats.service";

@Module({
    imports: [CatsModule, UsersModule],
    controllers: [AppController],
    providers: [AppService, CatsService],
})
export class AppModule {
}
but
サービス、Repository、ゲートウェイなど.直接注入は逆モードです
CatModulesからサービスをエクスポートし、非表示の方向を削除するためにサービスを使用できます.
import {Module} from '@nestjs/common';
import {CatsController} from './cats.controller';
import {CatsService} from './cats.service';

@Module({
    controllers: [CatsController],
    providers: [CatsService],
    exports: [CatsService],
})
export class CatsModule {
}
interceptor
インタフェースの作成
import {Injectable, NestInterceptor, ExecutionContext, CallHandler} from '@nestjs/common';
import {Observable} from 'rxjs';
import {tap} from 'rxjs/operators';

@Injectable()
export class SuccessInterceptor implements NestInterceptor {
    intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
        console.log('Before...');

        const now = Date.now();
        return next
            .handle()
            .pipe(
                tap(() => console.log(`After... ${Date.now() - now}ms`)),
            );
    }
}
依存注入の挿入

@Controller('cats')
@UseInterceptors(SuccessInterceptor)// 이부분
@UseFilters(HttpExceptionFilter)
export class CatsController {
    constructor(private readonly catsService: CatsService) {
    }

    @Get()
    getAllCat() {
        return 'all cat';
    }
受信者の役割
インタフェースはコントローラの前で実行し、コントローラの後で実行します.
通常、コントローラからデータを受信し、加工および放出を行う
実行はコントローラの前で記録されますが、通常はミドルウェアで処理されるため、あまり多くは必要ありません.