2Ruk / nestjs-study

nestjs-study
0 stars 0 forks source link

[1 주차] 학습 내용 정리 #8

Closed DaHoon06 closed 8 months ago

DaHoon06 commented 8 months ago

@Module()


NestJS 애플리케이션 구조를 만들 때 사용할 수 있는 메타데이터를 제공해주는 역할

NestJS에서 모듈인 기본적으로 싱글톤 패턴

모듈과 프로바이더 간의 관계 및 종속성을 연결하기 위해 사용하는 내부 데이터 구조

@Module({
    providers: [],
    controllers: [],
    imports: [],
    exports: [],
})
export class ModuleClass {}

@Controller()


외부 요청을 처리하는 모듈, 클라이언트에서 요청 받은 일을 처리하고 응답하는 역할

컨트롤러의 목적은 요청에대한 수신하는 것

class BodyDto {
    boardId: number;
    title: string;
    content: string;
}

import { Controller, Post, Get, Delete, Put, Patch, Body, Query, Param } from '@nestjs/common';

@Controller()
export class StudyController {

    @Post('/')
    async createBoard(@Body('createBody') createBody: BodyDto) {}

    @Get('/:boardId')
    async getBoardByBoardId(
                @Param('boardId') boardId: number,
                @Query('page') page: number) {}

    @Delete('/:boardId')
    async deleteBoard(@Param('boardId') boardId: number) {}

    @Put('/')
    async putRequest() {}

    @Patch('/')
    async pathRequest() {}
}

컨트롤러에서는 HTTP Method 별 데코레이터를 사용할 수 있습니다.

@Injectable()


NestJS에서 해당 데코레이터가 붙은 클래스를 Provider로 간주합니다.

이 안에서 Service, Respository, Factory 등으로 구분하게 되는데 Service Class의 역할은 DB 접근을 하기전 비즈니스 로직을 관리하고, DB 접근에 관련한 역할을 Respository Class에 위임합니다.

TypeORM & Entity

TypeORM은 ORM (Object Relational Mapping)을 도와주는 라이브러리

특징

Entity는 데이터베이스의 테이블과 대응되는 클래스

DTO (Data Transfer Object)

데이터 전송 객체, 프로세스 간 데이터를 전달하는 객체를 의미

interceptor


요청과 응답을 중간에 가로채어 데이터를 변경할 수 있습니다.

interceptor 는 RxJS 의 Observable 객체를 반환하는데 이는 요청의 실행 순서와 반대로 동작 즉, 요청은 전역 → 컨트롤러 → 라우터 의 순이고 응답은 라우터 → 컨트롤러 → 전역 의 순으로 동작

middleware


Middleware 는 라우트 핸들러가 클라이언트 요청을 처리하기 전에 동작

미들웨어의 역할

2Ruk commented 8 months ago

아주 훌룡히 정리 잘 해주셨네요! n:m 의 경우에는 저장할 수 있는 Column의 제한 때문에 1:N 까지 승격시키긴해요! (링크)[https://ict-nroo.tistory.com/127] 궁금하시다면 보시면 될 것 같아요!