목록Nest.JS (14)
상똥이의 Back-End 공부방
목표1. JWT를 사용해서 로그인, 로그아웃을 처리한다.2. 로그인 시 토큰을 발급한다.3.필요시 토큰을 새로 발급한다. 목차0. 기본 설정 (스키마, 회원가입 로직)1. 로그인 시 토큰 발급과 저장2. 로그아웃 시 토큰 삭제3. 로그인 유지를 위한 리프레시 토큰 발급[0. 기본 설정]1. 유저 스키마model User { id Int @id @default(autoincrement()) email String @unique password String refreshToken String?} 2. 회원가입 로직//user.service.ts async createUser(dto: User) { try { const check = await this.prisma..
목표- 코드 중복 최소화하기- 소셜로그인 로직 이해하기- 소셜로그인 환경설정하기 목차0. 들어가며 (전체 코드)1. 기본 설정 (유저 생성 로직)2. 플랫폼별 로그인 과정 이해하기3. 플랫폼별 환경 설정하기(naver, google, kakao)4. 코드 작성하기 [0. 들어가며]1. 전체 코드는 아래에서 확인하세요https://github.com/Sangddong/Social-log-in 2. 코드를 적용할 때 필요한 것- 사실 코드 전체를 복붙해도 잘 돌아갈 것이다- 필요한 것은 목차 3번 과정 수행과, 그를 통해 나오는 env에 저장해야 할 값이다 3. 왜 이걸 글로 쓰고 있냐면더보기- 카카오 소셜로그인을 한 번 구현해본 후 다른 소셜로그인들을 구현할 일이 생겼다- 이를 구현하기 위해 naver, ..
목차0. 해야할 것들1. config service, env2. cors3. response object [0. 해야할 것들]nest의 프로젝트 세팅을 위해 해야할 것들은 아래와 같습니다.config service & .envcors 활성화response object 세팅(1) Nest.js 공식문서에서 .env파일 내부의 환경변수를 사용할 때에는, ConfigModule의 ConfigService를 사용하도록 추천합니다 (2) 프론트엔드와의 api 연결을 위해 cors 활성화가 필요합니다 (3) response object 형식을 설정하여 postman 등에서 확인 가능합니다. 특히 오류가 발생했을 때 상태코드와 에러메세지를 출력하도록 설정하면 생산성이 높아집니다 [1. configService & e..
[라이프사이클 요약]1. 미들웨어- 경로 처리기 이전에 호출됨- 요청 & 응답 객체에 접근 가능하며, 변화시킴- 기존 Express 미들웨어 라이브러리 지원(cors, body-parser, morgan 등)- 인증(토큰 유효성, 요청 객체에 props 첨부하기 등) 레이어를 처리하기 좋은 후보 2. 가드- 특정 조건에 따라 주어진 요청을 처리할지 여부를 결정 (접근 제어 목록, 역할, 허가 등)- 인가 레이어와 비슷- ExecutionContext에 접근할 수 있음 (경로 처리기 이전 단계) 3. 인터셉터- 경로 처리기 전후 모두에 호출 가능- 들어오는 데이터를 변화시킴- 반환되는 데이터를 변화시킴 4. 파이프- 경로 처리기에 들어가는 데이터를 젼화시킴- 들어오는 데이터 유효성 검사- 특정 데이터 속성..
Exception filtersNest는 애플리케이션 전체에서 처리되지 않은 예외를 처리해주는 예외 레이어가 내장되어있습니다. 애플리케이션 코드에서 예외처리가 되지 않은 경우 이 레이어에 인식되고 자동으로 사용자 친화적인 응답을 내보냅니다.별도의 설치 과정이 필요 없이, 이는 HttpException 타입의 예외를 처리하는 내장된 전역 예외 필터에 의해 수행됩니다. 만약 예외상황이 인식되지 않으면 내장된 예외 필터가 아래의 JSON 형식의 응답을 생성합니다.{ "statusCode": 500, "message": "Internal server error"}HINT전역 예외 필터는 http-errors 라이브러리를 부분적으로 지원합니다. 기본적으로, 상태코드와 메시지를 포함하는 예외가 발생하면 적절히 ..
Middleware미들웨어는 라우트 핸들러 전에 호출되는 함수입니다. 미들웨어 함수는 요청 및 응답 객체와 애플리케이션의 요청-응답 사이클에서 next() 미들웨어 함수에 접근할 수 있습니다. next 미들웨어 함수는 일반적으로 next라는 변수로 표시됩니다.네스트 미들웨어는 기본적으로 express 미들웨어와 동일합니다. 아래의 express의 공식문서에서 가져온 설명은 미들웨어의 능력을 서술합니다.:미들웨어 함수는 아래의 업무를 수행할 수 있습니다.: · 어느 코드든 실행할 수 있음 · 요청과 응답 객체를 변형할 수 있음 · 요청-응답 사이클을 종료시킴 · 다음 미들웨어 함수를 호출함 · 만약 현재 미들웨어가 요청-응답 사이클을 종료하지 않으면, 반드시 next()를 호출해..
Module은 @Module() 데코레이터를 사용하는 클래스입니다. @Module() 데코레이터는 Nest가 애플리케이션 구조를 조직할 수 있도록 메타데이터를 제공합니다. 각각의 애플리케이션은 적어도 하나의 모듈(루트 모듈)을 가지고 있습니다. 루트 모듈은 애플리케이션 그래프(Nest가 모듈과 프로바이더 사이의 관계와 의존성을 해결하는데 사용하는 내부 데이터 구조)를 만드는 시작점입니다. 아주 작은 애플리케이션이 이론적으로 루트 모듈만을 가지기 때문에 이런 경우는 일반적이지 않습니다. 모듈이 컴포넌트를 구성하는데에 효과적인 방법이라고 강력히 추천하고 싶습니다. 따라서 대부분의 애플리케이션에서 결과적으로 여러 모듈을 사용하여, 각각 밀접하게 관련된 기능 집합을 캡슐화하는 아키텍처를 채택하게 됩니다. @Mo..
ProvidersProvider는 Nest의 근본적인 개념입니다. 많은 Nest의 기본 클래스는 Provider로 취급될 수 있습니다. Provider의 주 목적은 의존성 주입입니다. 이는 객체가 서로 다양한 관계를 맺을 수 있음을 의미하며 이 객체들을 "연결하는" 기능은 크게 Nest 런타임 시스템에 위임될 수 있습니다.이전 장에서 간단한 CatsController를 작성했습니다. Controller는 HTTP 요청을 처리하고 더 복잡한 작업은 Provider에 위임합니다. Provider는 module에 'providers'로 선언되는 순수 자바스크립트 클래스입니다.HINTNest는 객체 지향적인 방식으로 의존성을 설계하고 구성할 수 있는 가능성을 제공하기 때문에, SOLID 원칙을 따르는 것을 강력..
Controllers컨트롤러는 클라이언트로부터 요청을 받고 응답하는 역할을 맡고 있습니다.컨트롤러의 목적은 애플리케이션에 들어오는 특정한 요청을 받아들이는 것입니다. 라우팅 매커니즘은 어느 컨트롤러가 어느 요청을 받아들일지 제어합니다. 주로 각각의 컨트롤러는 하나 이상의 경로를 가지며 경로들은 서로 다른 역할을 수행할 수 있습니다. 기본 컨트롤러를 만들기 위해, 우리는 클래스와 데코레이터를 사용합니다. 데코레이터는 클래스에 필요한 메타데이터를 연결하고, 이를 통해 Nest는 라우팅 맵을 생성합니다. (이 라우팅 맵은 들어오는 요청을 해당하는 컨트롤러에 연결합니다.)HINT내장된 검증과 함께 CRUD를 빠르게 생성하고 싶다면, CLI의 CRUD 생성 명령어: nest g resource [name] 를 사..