勉強する
目的
新しいカリキュラムのコアコンテンツの記録
内容
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';
}
受信者の役割インタフェースはコントローラの前で実行し、コントローラの後で実行します.
通常、コントローラからデータを受信し、加工および放出を行う
実行はコントローラの前で記録されますが、通常はミドルウェアで処理されるため、あまり多くは必要ありません.
Reference
この問題について(勉強する), 我々は、より多くの情報をここで見つけました https://velog.io/@kyj5394/Nestjs-공부テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol