SlideShare a Scribd company logo
1 of 13
Download to read offline
LifeCycle
Middleware, guard, interceptor, pipe optional
NestJS 폴더 구조
Controller
HTTP 엔드포인트를 정의
Ex) http://localhost:8080/posts
NestJS에서 제공하는 Decorator로 분기
요청이 어디로 라우팅 될 지 결정
Path parameter와 body로 전달 된 데이터 검증
Guard와 Pipe 라이프사이클을 처리 (optional)
요청이 검증되면 service를 호출
Nest cli로 controller생성 시 자동으로 service를
Dependency Injection을 해줌
어떻게 자동으로 DI를 해주냐 (Module)
module에 providers에 리스트로
주입 받을 클래스를 작성해줌
NestJS cli로 생성 시 자동으로 해줌
service에 Injectable decorator를 작성
module에서 providers에 등록 할 수 있게
IOC container (Inversion of control)
AppModule과 Main
AppModule에 생성한 모듈들을 imports
리스트 안에 작성해주고, app을 생성하는
create함수에 AppModule을 작성해줌
Pipe
parameter validator
parameter를 변형
PipeTransform 인터페이스로 구현
Injectable을 작성 해줘야 됨
Pipe 사용 예제
parameter의 id값은 number 값임
get요청 시 url의 id값은 string값임
pipe에서 number 타입으로 transform
pipe를 통과하지 못할 시 exception을 던짐
Type 관리가 굉장히 편해짐
Custom Pipe
Custom pipe를 만들 때 pipeTransform
Implements 해서 생성 해줘야 됨
transform의 value값이 parameter로
전달된 value 값에 따라 자유롭게 처리 가능
Injectable decorator 작성 해줘야 됨
Guards
Return type의 Promise<boolean> 값이
Guard를 통과 여부를 결정함
CanActivate 인터페이스로 구현
canActivate 함수의 context에 request가 담김
http : switchToHttp()
web socket : switchToWs()
rpc: switchToRpc()
DTO (data transfer object)
잘못된 데이터에 대한 명확한 에러 메세지를
전달하고 싶을 때
Body에 담긴 데이터가 엄청 많을 때?
Request에 전달 된 데이터 검증이 필요할 때
DTO (data transfer object)
yarn add class-validator
yarn add class-transformer
https://github.com/typestack/class-validator?
tab=readme-ov-
fi
le#validation-decorators
@IsString() decorator에 다른 타입의 값이
전달되면 exception을 던짐
exception에 명확한 에러 메세지를 전달 할 수 있음
DTO 적용 예시
Controller
Service

More Related Content

Similar to Nest JS (Kitworks Team Study 이본훈 발표 240315)

반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게Sungju Jin
 
Dependency Injection 소개
Dependency Injection 소개Dependency Injection 소개
Dependency Injection 소개beom kyun choi
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현NAVER Engineering
 
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경YoungSu Son
 
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postK8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postInho Kang
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 SeongHyun Ahn
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practicedonghoonlee18659041
 
Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스Tae Ho Kang
 
11st Legacy Application의 Spring Cloud 기반 MicroServices로 전환 개발 사례
11st Legacy Application의 Spring Cloud 기반 MicroServices로 전환 개발 사례11st Legacy Application의 Spring Cloud 기반 MicroServices로 전환 개발 사례
11st Legacy Application의 Spring Cloud 기반 MicroServices로 전환 개발 사례YongSung Yoon
 
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API 안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API Gosu Ok
 
안드로이드 오픈소스 패턴 - 0.1
안드로이드 오픈소스 패턴 - 0.1안드로이드 오픈소스 패턴 - 0.1
안드로이드 오픈소스 패턴 - 0.1YoungSu Son
 
Netty 세미나
Netty 세미나Netty 세미나
Netty 세미나Jang Hoon
 
Servlet Architecture
Servlet ArchitectureServlet Architecture
Servlet ArchitectureJU Chae
 
AWS로 연결하는 사물인터넷의 세계 :: 이경수 :: AWS Summit Seoul 2016
AWS로 연결하는 사물인터넷의 세계 :: 이경수 :: AWS Summit Seoul 2016AWS로 연결하는 사물인터넷의 세계 :: 이경수 :: AWS Summit Seoul 2016
AWS로 연결하는 사물인터넷의 세계 :: 이경수 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modulesJay Kim
 
[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVC[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVCAnselmKim
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사Rjs Ryu
 
Kotlin 테스트 코드 결함 Intellij 플러그인 개발기.docx
Kotlin 테스트 코드 결함 Intellij 플러그인 개발기.docxKotlin 테스트 코드 결함 Intellij 플러그인 개발기.docx
Kotlin 테스트 코드 결함 Intellij 플러그인 개발기.docxridex92
 

Similar to Nest JS (Kitworks Team Study 이본훈 발표 240315) (20)

반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
Dependency Injection 소개
Dependency Injection 소개Dependency Injection 소개
Dependency Injection 소개
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
 
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
 
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postK8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_post
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
 
Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스
 
11st Legacy Application의 Spring Cloud 기반 MicroServices로 전환 개발 사례
11st Legacy Application의 Spring Cloud 기반 MicroServices로 전환 개발 사례11st Legacy Application의 Spring Cloud 기반 MicroServices로 전환 개발 사례
11st Legacy Application의 Spring Cloud 기반 MicroServices로 전환 개발 사례
 
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API 안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
 
안드로이드 오픈소스 패턴 - 0.1
안드로이드 오픈소스 패턴 - 0.1안드로이드 오픈소스 패턴 - 0.1
안드로이드 오픈소스 패턴 - 0.1
 
Netty 세미나
Netty 세미나Netty 세미나
Netty 세미나
 
Servlet Architecture
Servlet ArchitectureServlet Architecture
Servlet Architecture
 
AWS로 연결하는 사물인터넷의 세계 :: 이경수 :: AWS Summit Seoul 2016
AWS로 연결하는 사물인터넷의 세계 :: 이경수 :: AWS Summit Seoul 2016AWS로 연결하는 사물인터넷의 세계 :: 이경수 :: AWS Summit Seoul 2016
AWS로 연결하는 사물인터넷의 세계 :: 이경수 :: AWS Summit Seoul 2016
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modules
 
[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVC[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVC
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사
 
Kotlin 테스트 코드 결함 Intellij 플러그인 개발기.docx
Kotlin 테스트 코드 결함 Intellij 플러그인 개발기.docxKotlin 테스트 코드 결함 Intellij 플러그인 개발기.docx
Kotlin 테스트 코드 결함 Intellij 플러그인 개발기.docx
 

More from Wonjun Hwang

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)Wonjun Hwang
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)Wonjun Hwang
 
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)Wonjun Hwang
 
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)Wonjun Hwang
 
JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)Wonjun Hwang
 
Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Wonjun Hwang
 
XSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyXSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyWonjun Hwang
 
Flutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyFlutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyWonjun Hwang
 
얕은복사,깊은복사
얕은복사,깊은복사얕은복사,깊은복사
얕은복사,깊은복사Wonjun Hwang
 
Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Wonjun Hwang
 
완전 유용한 CSS 모음
완전 유용한 CSS 모음완전 유용한 CSS 모음
완전 유용한 CSS 모음Wonjun Hwang
 
2024 개발 트렌드
2024 개발 트렌드2024 개발 트렌드
2024 개발 트렌드Wonjun Hwang
 
디바운싱과 쓰로틀링
디바운싱과 쓰로틀링디바운싱과 쓰로틀링
디바운싱과 쓰로틀링Wonjun Hwang
 
스마트한 팀 협업
스마트한 팀 협업스마트한 팀 협업
스마트한 팀 협업Wonjun Hwang
 

More from Wonjun Hwang (20)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)
 
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
 
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)
 
JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)
 
Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)
 
XSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyXSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team Study
 
Flutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyFlutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team Study
 
PWA
PWAPWA
PWA
 
얕은복사,깊은복사
얕은복사,깊은복사얕은복사,깊은복사
얕은복사,깊은복사
 
Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기
 
완전 유용한 CSS 모음
완전 유용한 CSS 모음완전 유용한 CSS 모음
완전 유용한 CSS 모음
 
2024 개발 트렌드
2024 개발 트렌드2024 개발 트렌드
2024 개발 트렌드
 
디바운싱과 쓰로틀링
디바운싱과 쓰로틀링디바운싱과 쓰로틀링
디바운싱과 쓰로틀링
 
Passkey
PasskeyPasskey
Passkey
 
스마트한 팀 협업
스마트한 팀 협업스마트한 팀 협업
스마트한 팀 협업
 
AI News '23.12
AI News '23.12AI News '23.12
AI News '23.12
 

Nest JS (Kitworks Team Study 이본훈 발표 240315)

  • 1.
  • 4. Controller HTTP 엔드포인트를 정의 Ex) http://localhost:8080/posts NestJS에서 제공하는 Decorator로 분기 요청이 어디로 라우팅 될 지 결정 Path parameter와 body로 전달 된 데이터 검증 Guard와 Pipe 라이프사이클을 처리 (optional) 요청이 검증되면 service를 호출 Nest cli로 controller생성 시 자동으로 service를 Dependency Injection을 해줌
  • 5. 어떻게 자동으로 DI를 해주냐 (Module) module에 providers에 리스트로 주입 받을 클래스를 작성해줌 NestJS cli로 생성 시 자동으로 해줌 service에 Injectable decorator를 작성 module에서 providers에 등록 할 수 있게 IOC container (Inversion of control)
  • 6. AppModule과 Main AppModule에 생성한 모듈들을 imports 리스트 안에 작성해주고, app을 생성하는 create함수에 AppModule을 작성해줌
  • 7. Pipe parameter validator parameter를 변형 PipeTransform 인터페이스로 구현 Injectable을 작성 해줘야 됨
  • 8. Pipe 사용 예제 parameter의 id값은 number 값임 get요청 시 url의 id값은 string값임 pipe에서 number 타입으로 transform pipe를 통과하지 못할 시 exception을 던짐 Type 관리가 굉장히 편해짐
  • 9. Custom Pipe Custom pipe를 만들 때 pipeTransform Implements 해서 생성 해줘야 됨 transform의 value값이 parameter로 전달된 value 값에 따라 자유롭게 처리 가능 Injectable decorator 작성 해줘야 됨
  • 10. Guards Return type의 Promise<boolean> 값이 Guard를 통과 여부를 결정함 CanActivate 인터페이스로 구현 canActivate 함수의 context에 request가 담김 http : switchToHttp() web socket : switchToWs() rpc: switchToRpc()
  • 11. DTO (data transfer object) 잘못된 데이터에 대한 명확한 에러 메세지를 전달하고 싶을 때 Body에 담긴 데이터가 엄청 많을 때? Request에 전달 된 데이터 검증이 필요할 때
  • 12. DTO (data transfer object) yarn add class-validator yarn add class-transformer https://github.com/typestack/class-validator? tab=readme-ov- fi le#validation-decorators @IsString() decorator에 다른 타입의 값이 전달되면 exception을 던짐 exception에 명확한 에러 메세지를 전달 할 수 있음