nestjs 알아보기, 기본세팅

jangdu·2023년 3월 20일
0

nest.js

목록 보기
1/11

NestJS

node.js에 기반을 둔 웹 API 프레임워크로, ExpressFastify를 래핑하면서 동작한다.

node.js의 유연함을 그대로 가지면서, 프레임워크안에 좋은 기술들을 이미 구현해둔 친구,

NestJS 설치하면 Express를 사용함
아무래도 Express가 node를 이용한 친구들 중에 가장 널리 사용되고 있는데, 거기 미들웨어들 엄청 많이 호환이 된다.

Node

  • Node는 손쉽게 사용하고 뛰어난 확장성이 있지만,
    너무 유연해서 결과물 품질이 일정하지 않고, 각 라이브러리를 찾는 시간이 오래걸리는 단점이 있는데,

Nest

  • 그에 반해 NestJS는 DB, 객체관계매핑, ORM, 설정(configuration), 유효성 검사 등등 기능들을 기본 제공한다.
  • 필요한 라이브러리는 npm같은거로 설치해 기능 확장이 가능한 node의 장점을 그대로 가진다.
  • NestJS는 모듈/컴포넌트 기반으로 프로그램을 작성해서 재사용성이 높아서 협업할 때 엥간함.
  • 타입스크립트가 기본임

NestJS 설치, 설정

> npm i -g @nestjs/cli

설치 후 프로젝트 만들기

nest new project-name

이러면 파일이 생성되고 시작이 가능하다.

아니면 NestJS공식 예제 스타터 프로젝트로 클론해서 시작해도 된다.
너무도 친절한 프레임워크인듯

> git clone https://github.com/nestjs/typescript-starter.git 프로젝트명
> cd 프로젝트면
> npm install
> npm run start:dev

개발 시에는 npm run start보다 npm run start:dev를 이용해서 사용하는게 좋다.

scr폴더 내의 구조를 보면 각각

  • app.controller.ts: 단일 경로가 있는 기본적인 컨트롤러
  • app.controller.spec.ts: 컨트롤러 단위 테스트
  • app.module.ts: 루트 모듈
  • app.service.ts: 단일 메서드를 사용하는 기본 서비스
  • main.ts: NestFactory핵심 기능을 사용하여 Nest 애플리케이션 인스턴스를 생성하는 애플리케이션의 엔트리 파일

역할을 한다.

main.ts의 bootstrap을 보면 3000번 포트로 실행하는 것을 알 수 있다.

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

Nest 앱 인스턴스를 생성하기 위해서 NestFactory클래스를 사용한다.
NestFactory는 몇가지 정적 메서드를 제공하는데,
create()는 인터페이스를 충족하는 응용프로그램 개체를 반환한다.

쉽게말해서 걍 저거쓰면 앱 생성되고 서버 열수있다는거임 ㅇㅇ

nest에서의 API 흐름

  1. API 요청
  2. controller에서 -> 요청 DTO 유효성 검사
  3. 인증유무 AuthGuard로 이동 -> JWT검사
  4. service에서 비즈니스 로직 수행 (예외처리 응답)
  5. repository에서 db 관련 작업
  6. 성공, 응답을 controller로 반환 -> 응답 DTO
  7. API테스트 진행
  8. Swagger API문서 세팅 -> 요청, 응답 DTO 활용
  9. e2e테스트 -> 자동테스트 진행

nest모듈

nest는 걍 모든지 모듈이다. node랑 똑같음 ㅇㅇ

app모듈

가장 메인 모듈인데, todoAPP이라고 치면
User, Todo, Category 뭐 이런거 의 모듈이 포함된다.
이 모듈들이 app모듈에서 하나로 진행됨

profile
대충적음 전부 나만 볼래

0개의 댓글