-
Module
@Module
데코레이터 사용
- nest에 애플리케이션 구조를 만들 떄 사용하는 메타데이터를 제공하는 역할
- 루트 모듈과 피쳐모듈이 있다
-
Controller
@Controller
데코레이터 사용
- 외부의 요청을 받고 응답을 반환하는 역할
- 라우터
- 핸들러(@Get, @Post 등 데코레이터가 달린 메서드)들로 구성
- 컨트롤러는 피쳐 모듈에 controllers 인자로 추가
-
Service
@Injectable
데코레이터 사용
- 데이터의 유효성 체크나 데이터가공 등 비즈니스 로직 작업
- Controller의 생성자에서 인자로 받아서 사용
- 피쳐 모듈에 provider에 인자로 추가
-
Provider
- 종속성을 주입
- 모듈에 등록하면 nest가 알아서 객체들끼리 이어줌..?
-
Entity
@Entity
데코레이터 사용
- 데이터베이스 테이블로 변환되는 Class
- == 테이블 스키마
@PrimaryGenrantedColumn
, @Column
으로 컬럼들 정의
-
Repository
@Injectable
데코레이터 사용
- Entity와 함께 작동하고, Entity의 CRUD 처리 ****
- 데이터베이스와 상호작용 후 서비스에 제공
- Repository를 상속받아야 함
- 생성자에서 DB랑 연결해야 함
- 피쳐 모듈에 provider에 인자로 추가
-
Pipe
@Injectable
데코레이터 사용
- data transformation과 data validation을 위해 사용
- 데이터 타입을 변환 해주거나(string → number)
- 유효성 체크
- 컨트롤러 경로 처리할 때 인수로 넣는다
- nest는 메서드를 호출하기 직전에 파이프를 삽입하고 파이프가 메서드로 향하는 인수를 수신해서 작동하는 방식이다 통과하면 핸들러로 이동
- 핸들러 레벨 -
@UsePipes
데코레이터 사용
- 파라미터 레벨 - 핸들러의 인자에서 사용
- 글로벌 레벨 - main.ts에서 사용. 모든 요청에 대해 파이프 적용됨
- Built-in pipes들이 있다(6가지)
- 모듈 설치해야됨
- class-validator, class-transfomer
-
DTO
- 데이터가 네이트워크를 통해 전송되는 방법을 정의하는 객체
- interface나 class로 정의하지만 class로 보통 하는듯
- DTO를 사용하여 유효성 검사하고, typescript type 자체로 쓰임
-
ORM
- ORM(Object Relational Mapping)
- 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것
- 객체(클래스), DB(테이블)의 모델간 불일치를 ORM을 통해 SQL을 자동으로 생성해서 해결해줌
-
HTTP Status
- 1XX: Informational(정보 제공)
- 임시 응답으로 현재 클라이언트의 요청까지는 처리되었으니 계속 진행하라는 의미입니다. HTTP 1.1 버전부터 추가되었습니다.
- 2XX: Success(성공)
- 클라이언트의 요청이 서버에서 성공적으로 처리되었다는 의미입니다.
- 3XX: Redirection(리다이렉션)
- 완전한 처리를 위해서 추가 동작이 필요한 경우입니다. 주로 서버의 주소 또는 요청한 URI의 웹 문서가 이동되었으니 그 주소로 다시 시도하라는 의미입니다.
- 4XX: Client Error(클라이언트 에러)
- 없는 페이지를 요청하는 등 클라이언트의 요청 메시지 내용이 잘못된 경우를 의미합니다.
- 5XX: Server Error(서버 에러)
- 서버 사정으로 메시지 처리에 문제가 발생한 경우입니다. 서버의 부하, DB 처리 과정 오류, 서버에서 익셉션이 발생하는 경우를 의미합니다.
- ref: https://hongong.hanbit.co.kr/http-상태-코드-표-1xx-5xx-전체-요약-정리/
-
Interceptor, middleware