NestJS 13

DTO(Data Transfer Object)

DTO (Data Transfer Object) ? 계층 간 데이터 교환을 위한 객체입니다. DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말합니다. 데이터가 네트워크를 통해 전송되는 방법을 정의하는 객체입니다. interface나 class를 이용해서 정의될 수 있습니다. 하지만 NestJS에서는 class를 이용하는 것은 선호하고 있습니다. Link : https://docs.nestjs.com/controllers#request-payloads DTO는 하나의 디자인 패턴으로 데이터를 포맷(형식)화 하여 계층 간에 전송됩니다. 만약 A 계층과 B계층이 데이터를 주고받는데, JSON 형식으로 만든 type C가 있다면, C는 DTO가 됩니다. DTO를 사용..

NestJS 2022.03.17

게시물 생성하기 (Controller 부분)

게시물 생성하기 (CRUD → C) : Controller Requset와 Response 처리 클라이언트에서 들어오는 Request를 받는 역할과 동시에 클라이언트에게 Response 해주는 곳이 Controller 입니다. 작성한 서비스를 클라이언트에서 들어오는 Request를 처리하여 다시 Response 해줄 것입니다. 클라이언트에서 보내온 값(Request) 핸들러에서 가져오는 방법 Express 에서는 Express 내에 내장되어 있는 Parser 모듈을 이용해서 req.body 형태로 클라이언트에서 보내온 값을 받았는데, Nest와는 어떻게 다른지 작성할 것입니다. 1. Express Express 는 4.16.0 버전 이후로는 별도로 body-parser 모듈을 설치 하지 않아도 expre..

NestJS 2022.03.17

게시물 생성하기 (Service 부분)

CRUD => C : Service 작성하기 게시물 생성 기능 만들기 전 게시글에서 게시물에 대한 모델을 정의해주었습니다. 정의한 모델을 이용해 게시물 생성하는 기능을 만들겠습니다. 게시물 생성 기능 게시물에 관한 로직을 처리하는 곳은 Service 입니다. Service에서 로직을 처리해준 후에 Controller에서 Service의 불러와 클라이언트에게 전달합니다. 게시물 ID 처리 방법 ID는 모든 게시물에 유니크(중복된 값이 없는) 해야 합니다. 데이터베이스에 데이터를 넣어 줄때는 데이터베이스가 알아서 유니크한 값을 줍니다 Auto Increment 형태로 자동으로 ID 값을 증가시켜 처리합니다. 지금은 데이터베이스와 연동하지 않은 상태이므로, 임의로 유니크한 값을 주기 위해 uuid 모듈을 이용..

NestJS 2022.03.17

Board Model 정의하기

Board [ Model ] ? 게시물에 필요한 데이터가 어떤것이 필요한지를 정의해주기 위해서 게시물의 모델을 만들겠습니다. 예를 들어 게시물 데이터에는 게시물 번호[IDX], 작성자, 게시글 등이 필요합니다. 이를 정의해줄 코드를 작성하는 것이 모델입니다. Model 정의하기 Class를 이용하거나 Interface를 이용하면 됩니다. Interface 변수의 타입만을 체크합니다. Class 변수의 타입도 체크하고, 인스턴스 또한 생성할 수가 있습니다. Board Model 만들기 먼저 boards 디렉토리 안에 boards.model.ts 파일을 생성합니다. ./boards/boards.model.ts export interface Board { id: string; title: string; des..

NestJS 2022.03.17

[실습] Board Module 로직 구현

목표 : Controller 에서 Service 불러오기 진행 과정 Boards 모듈 생성하기 Boards 모듈 내 Controller 와 Service 생성하기 Service에 로직 작성 후 Controller 로 불러오기 NestJS 실행 후 데이터 확인하기 Ref CRUD 중 R에 해당하는 Read에 관련한 로직을 작성 할 것입니다. 실제 DB와 연동하지 않고, 간단한 데이터를 담을 수 있는 변수를 이용해 변수 데이터를 가져오는 로직을 구성할 것입니다. 0. NestJS CLI 설치 및 프로젝트 생성하기 Nest JS CLI 설치하기 $ npm i -g @nestjs/cli 전역에서 명령어 nest를 사용하기 위해서는 npm(Node Package Module)을 이용하여 전역으로 @nestjs/c..

NestJS 2022.03.16

간단하게 알아보는 NestJS Service

NestJS Service? 서비스는 소프트웨어 개발내의 공통 개념이며, NestJS, JavaScript에서만 쓰이는 개념이 아닙니다. @Injectable 데코레이터로 감싸져서 모듈에 제공되며, 이 서비스 인스턴스는 애플리케이션 전체에서 사용 될 수 있습니다. 서비스는 컨트롤러에서 데이터의 유효성 검사를 하거나, 데이터베이스에 아이템을 생성하는 등의 작업을 하는 부분을 처리합니다. Service를 Controller에서 이용할 수 있는 방법 의존성 주입 : ( DI - Dependency Injection ) 위에 보면 Controller에서 this.appService.getHello(); 이런식으로 Service에 정의해놓은 메소드를 Controller에서 가져와서 쓰는 걸 볼 수 있습니다. 위에..

NestJS 2022.03.16

간단하게 알아보는 NestJS Providers

NestJS Providers? 프로바이더는 Nest의 기본 개념입니다. 대부분의 기본 Nest 클래스는 서비스, 리포지토리, 팩토리, 헬퍼등 프로바이더로 취급될 수 있습니다. 프로바이더의 주요 아이디어는 종속성으로 주입할 수 있다는 것입니다. 즉, 객체는 서로 다양한 관계를 만들 수 있으며 객체의 인스턴스를 “연결”하는 기능은 대부분 Nest 런타입 시스템에 위임될 수 있습니다. Provider 등록하기 Provider를 사용하기 위해서는 이것을 Nest에 등록해줘야지 사용할 수 가 있습니다. 등록하기 위해서는 module 파일에서 할 수 있습니다. module 파일에 providers항목안에 해당 모듈에서 사용하고자 하는 Provider를 넣어주시면 됩니다.

NestJS 2022.03.16

간단하게 알아보는 NestJS Controller

NestJS Controller? 컨트롤러는 들어오는 요청을 처리하고 클라이언트에 응답을 반환하는 역할을 합니다. 컨트롤러는 @Controller 데코레이터로 클래스를 데코레이션하여 정의됩니다. @Controller('/boards') export class BoardsController {} 데코레이터는 인자를 Controller에 의해서 처리되는 경로로 받습니다. Handler 란 ? 핸들러는 @Get, @Post, @Delete 등과 같은 데코레이터로 장식된 컨트롤러 클래스 내의 단순한 메서드입니다. @Controller('/boards') export class BoardsController { /**********************/ // Handler ↓ // @Get() getBoards..

NestJS 2022.03.16

간단하게 알아보는 NestJS Module

NestJS Module? 모듈은 @Module() 데코레이터로 주석이 달린 클래스입니다. @Module() 데코레이터는 Nest가 애플리케이션 구조를 구성하는 데 사용하는 메타 데이터를 제공합니다. 각 애플리케이션에는 최소한 하나의 모듈인 루트 모듈이 있습니다. 루트 모듈은 Nest가 애플리케이션 그래프를 빌드하는 데 사용하는 시작점입니다. 구성 요소를 구성하는 효과적인 방법으로 모듈을 사용하는 것이 좋습니다. 기능별로 구성 ex) 유저모듈, 주문모듈, 챗모듈 ... 대부분의 응용 프로그램에서 결과 아키텍처는 각각 밀접하게 관련된 기능 집합을 캡슐화 하는 여러 모듈을 사용합니다. 같은기능에 해당하는 것들은 하나의 모듈 폴더안에 넣어서 사용합니다. (UserController, UserService, U..

NestJS 2022.03.16

NestJS 기본 로직 흐름

User 가 localhost:3000 [GET] 으로 Server 측에 Request를 요청 합니다. Nest 는 Controller가 Request 요청을 받아들여 올바른 요청인지 판단합니다. 올바른 요청일 경우 Controller은 Service 측에 데이터를 요청합니다. Service 측은 Controller가 요구한 데이터를 처리한 이후 Service는 데이터를 Controller한테 데이터를 전달합니다. Contoller는 전달받은 데이터를 User에게 Resopnse 으로 전달합니다.

NestJS 2022.03.16