모듈
·
NestJS/NestJS 문서화
모듈의 역할NestJS에서 모듈은 두 가지 역할을 합니다.하나의 큰 기능을 여러 개의 작은 기능으로 나누는 역할관련 있는 기능들을 하나의 단위로 묶는 역할하나의 큰 기능을 여러 개의 작은 기능으로 나누는 역할보통 하나의 앱은 여러 기능들이 있고, 각각의 기능도 세부 기능을 가지고 있습니다. 이 때 모듈 단위로 나누어 관리하면 재사용성이 높아지고 유지보수에 용이해집니다.관련 있는 기능들을 하나의 단위로 묶는 역할하나의 모듈은 여러 개의 업무 처리 절차로 나뉘어 있는데, 이러한 것을 하나로 묶는 역할을 합니다.모듈의 특징NestJS 앱은 최소 한 개 이상의 모듈을 가집니다.각각의 모듈은 별도의 폴더를 만들어 관리하는 것을 권장합니다.모듈은 싱글톤입니다. 동일한 모듈 인스턴스를 여러 모듈에서 사용할 수 있습니..
04. DTO를 사용한 리팩토링
·
NestJS/NestJS 게시판 API 프로젝트
DTO(Data Transfer Object)DTO는 여러 메서드 사이에 데이터를 전달할 때 사용하는 클래스입니다.DTO 사용 이유요청 -> 컨트롤러 -> 서비스 -> 응답에 이르는 과정에서 여러 부분에서 파라미터를 전달합니다.DTO를 사용하지 않으면 전달되어야 하는 데이터가 추가, 수정, 삭제 되는 경우 여러 부분을 수정해야 합니다.DTO 사용 시 DTO 파일만 수정하면 다른 부분은 수정하지 않아도 됩니다.DTO 작성board 폴더에 dtos 폴더를 만들고 board.dto.ts 파일을 만듭니다.board.dto.tsexport class BoardDto { title: string; content: string;}DTO를 사용한 컨트롤러와 서비스 리팩토링board.controller.ts/* 생략..
03. 게시판 모듈 작성
·
NestJS/NestJS 게시판 API 프로젝트
모듈NestJS에서 모듈은 두 가지 역할을 합니다.하나의 큰 기능을 여러 개의 작은 기능으로 나누는 역할관련 있는 스키매틱들을 하나의 단위로 묶는 역할하나의 큰 기능을 여러 개의 작은 기능으로 나누는 역할보통 하나의 앱은 여러 기능들이 있고, 각각의 기능도 세부 기능을 가지고 있습니다. 이 때 모듈 단위로 나누어 관리하면 재사용성이 높아지고 유지보수에 용이해집니다.관련 있는 스키매틱들을 하나의 단위로 묶는 역할하나의 모듈은 여러 개의 업무 처리 절차로 나뉘어 있는데, 이러한 것을 하나로 묶는 역할을 합니다.모듈 파일은모듈이 어떤 파일들을 참조하는지각각의 파일이 어떤 기능을 하는지정의합니다.모듈 생성Nest CLI를 사용해 모듈, 컨트롤러, 서비스를 생성합니다.nest generate module boar..
02. 컨트롤러와 서비스
·
NestJS/NestJS 게시판 API 프로젝트
컨트롤러컨트롤러는 라우팅(Routing) 역할을 합니다.라우팅이란 URL을 통한 요청이 있을 때 어떻게 처리하는지 관리하는 역할을 말합니다. 컨트롤러는 요청을 직접 처리하지 않고, 서비스에 처리를 위임합니다. 라우팅 추가app.controller.ts 파일에 라우팅을 추가합시다.import { Controller, Get, Param } from '@nestjs/common';import { AppService } from './app.service';@Controller()export class AppController { constructor(private readonly appService: AppService) {} @Get() getHello(): string { return this..
01. Nest CLI 및 NestJS 구조
·
NestJS/NestJS 게시판 API 프로젝트
NestJS가 무엇인지는 여기를 참조하세요.Nest CLI 설치Node.js가 설치되어있지 않다면 https://nodejs.org/ 여기에서 다운로드 하세요.Node.js 설치 후 터미널에서 아래 명령어를 실행하세요npm i -g @nestjs/clinest info #버전 확인을 통해 설치 확인NestJS 프로젝트 생성프로젝트 생성을 원하는 폴더에 들어가서 아래 명령어 실행하세요.nest new board-app위 명령어를 실행하면 패키지 매니저를 선택하라고 뜨는데, 잘 모르면 npm을 고르고, 잘 알면 자기가 원하는거 선택하세요.NestJS 프로젝트 실행프로젝트 생성이 끝나면 아래 명령어를 실행하세요.cd board-appnpm run start서버가 실행되면 웹 브라우저에 주소창에 http://l..
NestJS의 요청 처리 과정
·
NestJS/NestJS 문서화
NestJS 서버에 사용자가 어떤 것을 요청하면 아래 과정을 거쳐 처리한다.부가적인 부분과 실제 요청 처리 부분이 나뉘는 이유인증, 보안, 예외처리, 로그 등 서버를 운영하면서 반드시 필요하지만, 실제 업무 처리 절차와 연관이 없는 부분을 매번 구현하기 보다, 한 번 구현 후 재사용 하는 것이 좋기 때문이다.왜 이렇게 복잡하게 나누는가?객체지향 프로그래밍의 원칙 중 하나인 단일 책임 원칙에 의해 각각의 객체는 하나의 책임만 가지도록 설계한다.각각의 구성요소가 하는 일Controller와 Service 이외에는 직접 구현하는 일이 많지 않다.다른 구성요소들은 보통 이미 구현된 것들을 가져다 쓴다.Middleware : 미들웨어는 보통 3자 라이브러리를 의미하고, 다른 스키매틱이 하는 일을 할 수도 있고, ..
NestJS 프로젝트 기본 구조
·
NestJS/NestJS 문서화
CLI로 프로젝트를 생성하면 프로젝트에 필요한 패키지와 함께 프로젝트의 기본 구조도 같이 생성된다.루트 폴더프로젝트 루트 폴더에 있는 파일들은 설정 파일들이다..gitignore : git 연동 시 무시하는 파일 및 폴더 규칙을 관리하는 파일.prettierrc : 코드를 정리해주는 prettier라는 라이브러리의 설정 파일.eslintrc.config.js : 코드 규칙을 강제하는 ESLint라는 라이브러리의 설정 파일nest-cli.json : NestJS 프로젝트의 구성을 관리하는 파일package.json : 프로젝트에서 사용하는 라이브러리들과 명령어를 관리하는 파일README.md : 프로젝트의 정보를 설명하는 파일tsconfig.build.json : 프로젝트 배포를 위한 빌드 시 제외해야 하..
Nest CLI
·
NestJS/NestJS 문서화
프레임워크 개발 시 프레임워크에서 사용하는 패키지들을 설치하고, 프레임워크 구조에 맞게 폴더 구조를 만들어야 하는데 이 과정이 쉽지 않다.NestJS는 초기 설정을 위해 Nest CLI라는 기능을 지원한다. Nest CLI는 아래 기능들을 제공한다.프로젝트 생성프로젝트에 필요한 패키지 설치프로젝트 실행/빌드/테스트프로젝트 구성요소 생성Nest CLI 설치npm i -g @nestjs/clinest info #버전 확인을 통해 설치 확인프로젝트 생성nest new 프로젝트명ESLint 설정(윈도우즈 운영체제)윈도우즈의 경우 ESLint 설정에 아래 코드 추가"prettier/prettier": [ "error", { "endOfLine": "auto" } ],프로젝트 시작npm ..
NestJS란
·
NestJS/NestJS 문서화
NestJS란?NestJS는 두 가지 기능을 제공하는 프레임워크입니다.1. 프로그램의 구조 제공2. 객체의 인스턴스 생성 및 관리(의존성 주입)NestJS로 만들 수 있는 앱1. 서버(HTTP, GraphQL, 웹소켓, gPRC)2. 마이크로서비스 앱3. 독립형 앱(Stand Alone. CLI 앱 혹은 스케줄러 앱)구조 문제 해결Node.js 환경의 백엔드 프레임워크들은 파일/폴더 구성을 강제 하지 않습니다. 이로 인해 Node.js로 작성된 백엔드 프로젝트들은 개발자마다 파일/폴더 구성이 제각각이라 동일한 프로젝트 안에서도 코드 파악이 어려운 문제가 발생합니다.NestJS는 일정한 파일/폴더 구성을 강제해 구조 문제를 해결합니다.NestJS의 특징모듈화: 애플리케이션을 모듈로 나누어 관리하고, 코드의..