[개인 스터디] NestJS 정복하기 #07 - 커스텀 Pipe 구현
·
📚 스터디/백엔드
커스텀 파이프란, 지금까지는 NestJS에서 이미 구성해놓은 built-in 파이프를 사용했다. 하지만, 이것 말고도 따로 생성해서 사용할 수 있는 커스텀 파이프도 있다. 커스텀 파이프는 built-in에서 지원하지 않는 Validation이 있으면, 따로 Validation 검증을 진행하는 커스텀 파이프를 생성해서 Validation 검증을 진행한다. 커스텀 파이프 구성 Pipe Transform 인터페이스 우선 Pipe Transform이라는 인터페이스를 새롭게 만들 커스텀 파이프에 구현해줘야 한다. Pipe Transform 인터페이스는 모든 파이프에서 구현해줘야 하는 인터페이스이다. 그리고 이것과 함께 모든 파이프는 transform() 메소드를 필요로 한다. 이 메소드는 NestJS가 인자를 처..
[개인 스터디] NestJS 정복하기 #06 - Pipe 사용법
·
📚 스터디/백엔드
Pipe를 사용하기 위한 터미널 설정 NestJS Pipe 모듈 설치 [Validation & Transformer] 아래와 같은 터미널 명령어를 통해 Validation & Transformer Pipe를 설치한다. 해당 Pipe는 이전 포스팅에서 소개했던, NestJS에서 지원하는 Pipe 중 하나이다. (그렇기에, npm으로 모듈을 설치해서 바로 사용할 수 있다.) $ npm install class-validator class-transformer --save Part. 1-2 게시글 생성 API 파이프사용해서 Validation 진행 게시글 생성 DTO에 Pipe - Data Validation 적용 게시글 DTO에서 | 클라이언트 request 요청 클래스이자, 객체에서 request 값에 대..
[개인 스터디] NestJS 정복하기 #05 - Pipe { Data Transformation & Validation }
·
📚 스터디/백엔드
Pipe 란? 파이프는 @injectable() 데코레이터로 주석이 달린 "클래스"이다. 파이프는 Data transformation과 Data Validation을 위해서 사용된다. {데이터 변형 & 데이터 유효성 검사} 파이프는 컨트롤러 경로 처리기에 의해 처리되는 인수에 대해 작동한다. Nest는 메소드가 호출되기 직전에 파이프를 삽입하고 파이프는 메소드로 향하는 인수{Request 값}로 수신하고 이에 대해 작동한다. 아래는 Pipe를 포함시킨 클라이언트 - 서버의 동작논리를 나타낸 것이다. 참고하길 바란다. Pipe를 통해 클라이언트가 요청 Data에 대한 Transformation & Validation을 처리해준다. Pipe는 API 작동에 있어서 유효한 데이터인지를 검증하는 "클래스"로 A..
[개인 스터디] NestJS 정복하기 #04 - DTO | Data Transfer Object
·
📚 스터디/백엔드
DTO (Data Transfer Object) 란 DTO는 계층간 데이터 교환을 위한 "객체"이다. (데이터 교환 시 사용하는 객체 | 일종의 개발 규칙이다.) DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말한다. DTO는 데이터가 네트워크를 통해 전송되는 방법을 정의하는 객체이다. # DTO 구현 방식 Interface나 Class를 이용해서 정의 될 수 있다. (하지만, 클래스를 이용하는 것을 NestJS에서 추천하고 있다.) # DTO (Data Transfer Object)를 쓰는 이유는 무엇인가? 데이터 유효성을 체크하는데 효율적이다. 더 안정적인 코드로 만들어준다. | 타입스크립트의 타입으로도 사용된다. DTO 구현 게시글 생성 API의 Para..
[개인 스터디] NestJS 정복하기 #03 - 게시글 생성 API | Create API
·
📚 스터디/백엔드
게시글 생성 API 만들기 - Express Post 메소드 게시글 Model 구현 [게시글 객체형태 지정] 게시글 생성 API를 만들기 위해선, 게시물에 필요한 데이터가 어떤 것이 필요한지를 정의해주기 위해서 게시글의 모델을 만들어준다. 모델을 정의할 때는 2가지 방법이 있다. # Interface로 정의 & 클래스로 정의 이번에 만들 게시글 생성 API는 게시글 생성 구조만 다뤄볼 것이기에 Interface로 게시글 Model를 만든다. 클래스로 모델을 만드는 것은 NestJS로 API를 여러가지 다뤄본 후 만들예정이다. 아래와 같이 게시글 모델을 파일을 boards 폴더 내에(Controller, Module, Service 파일이 있는 폴더) 생성 후 Interface로 구성한다. 인터페이스는 "..
[개인 스터디] NestJS 정복 - CRUD API 구현
·
📚 스터디/백엔드
해당 포스팅의 목적은 NestJS를 공부하면서 구현한 API를 정리해두는 포스팅입니다. 이론 포스팅과 실습 포스팅을 분리하기 위해서 만들어진 포스팅이고, 해당 포스팅은 실습 포스팅입니다. 블로그를 참고하실 때 유의해주시길 바랍니다. 해당 포스팅은 NestJS를 공부하면서 꾸준히 추가될 예정이고, 추가될 때마다 포스팅 업데이트를 진행합니다. Part. 1-1 | 모든 게시글 조회 API { Read API | Get } 해당 API는 데이터베이스와 연동하지 않고 Nest 로컬변수에 게시글 데이터를 저장해두고, 구현했음을 참고하길 바란다. 그리고, Module, Controller, Service 파일의 구성은 이전 포스팅에서 다뤘기에, 생략하도록 하겠다. 아래의 구현된 코드들은 각 파일의 클래스 내부에 작..
[개인 스터디] NestJS 정복하기 #02 - NestJS | src 폴더 로직알아보기
·
📚 스터디/백엔드
Express 프레임워크 사용 로직 Node.js (Express 내장 X) Index.js - > route -> Controller NestJS (Express 내장) Module -> Controller -> Service # NestJS 라우팅 설정 - 엔드포인트 관리 NestJS는 Express를 내장하고 있기에, Express에 대한 설정이 필요없다. 그리고, NestJS는 라우팅 파일을 별도로 생성하지 않고, Controller에서 Get, Post, Delete 메소드들을 호출하고, 엔드포인트를 할당해준다. (Module 파일에서 할당된 라우트별로 모듈을 만들고, 이에 따라서 클라이언트가 접근가능하게 해준다.) main.ts -> Module.ts -> Controller.ts -> Ser..
[개인 스터디] NestJS 정복하기 #01 - NestJS 템플릿의 이해
·
📚 스터디/백엔드
NestJs 개발의 이해 - NestJS 아키텍처 NestJS로 게시물 생성 API를 만든다고 가정해볼 때, 아래와 같이 모듈?을 생성해서 개발을 한다. 아마도, Node.js에서 기능별로 폴더를 나눠서 아키텍처 구성해둔 것과 같다고 생각이 듦. 게시물 생성 시에는 "공개글", "비공개글"을 설정할 수 있기에 이에 따른 인증을 해주는 Auth 모듈과 게시물 생성을 해주는 Board 모듈을 구성해서 개발한다는 걸 알 수 있다. 해당 부분에 대해선, NestJS를 좀 더 공부해보고 추가 포스팅을 하도록 하겠다. 현재의 포스팅은 NestJS 단기적으로 공부하면서 정리하는 포스팅이기에, 내용이 추상적일 수 있다는 점을 감안하면 좋겠다! 시간이 남을 때, 업로드된 포스팅을 보기좋게 업데이트 하겠습니다~~ Nest..
[개인 스터디] NestJS을 시작하며 - NestJS 개발환경 셋팅
·
📚 스터디/백엔드
NestJS 란, NestJS는 서버 측 Node.js 애플리케이션을 구축하기 위한 프레임워크이다. 대부분 TypeScript로 구성되어 있다. - JavaScript도 존재한다고 함. # NestJS 특징 Nest는 Express와 같은 HTTP 서버 프레임 워크를 내장하고 있다. Express란, Node.js를 위한 웹 프레임워크이다. # Node.js와 Express의 차이점 Node.js와 다른점은, Express 위에 NestJS가 구동되고 있기에, API를 개발자에게 직접노출한다는 점이다. - Express내의 타사 모듈(API)을 직접 접근이 가능? 하다고 함 NestJS의 철학 Nest는 개발자와 팀이 고도로 테스트 가능하고 확장 가능하며 느슨하게 결합되고 유지 관리가 쉬운 애플리케이션을..
[Node.js] 10주차: 로그인 구현
·
📚 스터디/백엔드
보호되어 있는 글입니다.