NestJS로 효율적인 백엔드 개발하기 (07) - 예외 필터
·
NestJS/개념과 구조 정리
Exception Filters는 무엇인가??Nest 에는 애플리케이션 전체에서 처리되지 않은 모든 예외를 처리하는 내장 예외 처리 계층이 있다. 애플리케이션 코드에서 예외를 처리하지 못하면 이 계층에서 예외를 포착하여 사용자에게 적절한 응답을 전송한다.예외 필터를 위한 컨트롤러 셋팅필터를 확인하기 위해서 아래의 명령어를 입력하여 새로운 filter 컨트롤러를 만들어보자.nest g controller filter새로운 filter 컨트롤러를 생성한 후 정상적으로 파일이 생성되었는지 확인한다.filter.controller.ts의 코드를 열어서 경로 하나를 Get()으로 하나 만들어주자.import { Controller, Get } from '@nestjs/common';@Controller('filt..
NestJS로 효율적인 백엔드 개발하기 (06) - 미들웨어(클래스형, 함수형)
·
NestJS/개념과 구조 정리
미들웨어는 무엇일까??미들웨어는 Express와 마찬가지로 요청(Request)과 응답(Response) 사이에서 실행되는 함수이다.요청의 전처리(인증, 유효성검사, 로깅) 후 다음 스텝으로 넘겨주는게 필요할때 사용함Nest 미들웨어는 의존성 주입(Dependency Injection)을 완벽하게 지원함미들웨어 생성 - logger.middleware.ts import { Injectable } from '@nestjs/common';@Injectable()export class LoggerMiddleware { use(req, res, next) { console.log('Request...'); next(); }}middleware 폴더를 하나 생성 후 logger.middleware...
NestJS로 효율적인 백엔드 개발하기 (05) - 모듈에 대해 알아보자
·
NestJS/개념과 구조 정리
모듈 꼭 알아야 할까?Nest CLI를 사용하면 nest g controller, nest g service 같은 명령어 한 줄로 파일을 자동 생성할 수 있어서 처음에는 구조가 단순해 보이지만, 프로젝트 규모가 조금만 커져도 이게 왜 필요한지, 어디에 어떤 코드를 넣어야 하는지가 헷갈리기 시작한다. 나 역시 NestJS를 쓰면서 많은 기능들을 빠르게 만들 수 있었지만, 모듈을 이해하지 못하면 파일 구조가 뒤엉키고, 의존성 주입이 꼬이고, 유지보수가 어려워진다. 그래서 이번 포스트에서 한번 정리를 하고 넘어가려 한다.모듈은 무엇일까??NestJS에서 모듈은 앱 구조를 정의하고, 의존성을 관리하는 핵심 단위모듈은 기능 단위로 코드를 캡슐화한 것UsersModule ├─ users.controller.ts ├..
NestJS로 효율적인 백엔드 개발하기 (04) - 서비스 사용하기
·
NestJS/개념과 구조 정리
nest/cli 명령어로 service.ts 만들기이전에 nest g resource users 명령어를 사용하여 프로젝트를 셋팅 했다면 service.ts가 있지만 혹시라도 없는 경우에는 하단의 명령어를 통해서 service.ts를 셋팅하도록 하자nest g service users인터페이스 생성잠시동안 users 타입으로 데이터를 받아줄 인터페이스를 생성한다. 아래의 명령어를 터미널에 입력하자.nest g interface users그리고 인터페이스가 생성이 되면 아래와 같이 타입을 지정해주자.export interface Users { name: string; age: number; job: string;}service.ts 설정import { Injectable } from '@nestjs/..
NestJS로 효율적인 백엔드 개발하기 (03) - 컨트롤러 사용하기
·
NestJS/개념과 구조 정리
컨트롤러(controller)란?NestJS의 컨트롤러는 HTTP 요청을 받아 처리할 메서드로 연결하고, 서비스의 실행 결과를 클라이언트에게 돌려주는 역할을 한다. URL 경로와 HTTP 메서드를 매핑해 애플리케이션의 라우팅을 담당하는 핵심 요소이다.시작 전 셋팅nest g resource users시작 전 위의 명령어를 실행하여 users를 만들어준다.@Getimport { Controller, Get } from '@nestjs/common';@Controller('users')export class UsersController { @Get() findUser(): string { return 'find user page'; }}@Controller('users')를 통해서 localhos..
NestJS로 효율적인 백엔드 개발하기 (02) - 컨트롤러, 서비스, 모듈
·
NestJS/개념과 구조 정리
기본설명Nest는 타입스크립트와 순수 자바스크립트 모두와 호환 됨순수 자바스크립트와 함께 사용하려면 Babel 컴파일러가 필요함25년 12월 기준 Node.js(20) 이상의 버전이 설치되어 있는지 확인이 필요디렉토리 확인하기이전에 01번 포스트에서 정상적으로 진행했다면 보일러플레이트가 정상적으로 설치되었을 것이다. 그리고 src 폴더를 열어본다.보일러 플레이트란?컴퓨터 프로그래밍에서 "보일러플레이트"는 각종 프로젝트의 기본이 되는, 재사용될만한 소스 코드 기반을 의미합니다. 프로젝트를 시작할 때마다 기본이 될만한 세팅들을 매번 넣어준다면 초기 준비 시간이 많이 소요될 수 있기 때문에, 자주 사용되는 "상용구 코드"를 미리 프로젝트화 하여 제작해두는 것입니다. 여러 회사들은 각자 사내에서 주요 기술이라고..
NestJS로 효율적인 백엔드 개발하기 (01) - nest/cli 설치
·
NestJS/개념과 구조 정리
시작Express로 백엔드를 작업하면서 자유도가 높다는 장점을 경험했다. 혼자 작업할 때는 매우 편리했지만, 팀 프로젝트에서는 이 자유도가 오히려 단점으로 작용하기도 했다. 규격과 구조를 어느 정도 정리하지 않으면 협업에서 불편한 상황들이 만들어졌다. 그래서 이후에는 SpringBoot로 옮겨 개발했다. 스프링부트는 큰 규모의 프로젝트에서 안정적이고 구조화된 개발을 지원해, 팀 환경에서 훨씬 효율적임을 느꼈다. 하지만 한 가지 프레임워크에만 의존하다 보니, 프로젝트 상황에 따라 유연하게 대응하기 어렵다는 한계도 있었다. 이러한 경험을 통해, 백엔드 개발자라면 한 프레임워크나 언어에 얽매이지 않고 상황에 맞는 기술을 선택할 수 있어야 한다는 생각을 하게 되었다.Nest CLI 설치하기설치 전 확인 - 25..