백앤드(Back-End)/Nest.js 15

[Nest.js] 심화 - 인터셉터(Interceptors) 개념 및 사용법

- 개요 안녕하세요. 이번 시간에는 인터셉터(Interceptors)에 대해 알아보겠습니다. 인터셉터를 접하게 되면 항상 따르는 AOP(Aspect Oriented Programming) 기술을 강조하고 있습니다. 메서드 실행 전/후 추가적으로 로직을 바인딩 함수에서 반환된 결과를 변환 함수에서 발생된 예외를 변환 기본적인 기능에서 확장 특정 조건에 따라 기능을 재정의 위와 같이 다섯 가지 예시를 들면서 공식 홈페이지에서 설명하고 있습니다. 사실 깊이 파고들면 어려운 개념이지만 이번 시간에는 AOP에 대한 이해보다는 Nest.js 프레임워크에서 인터셉터(Interceptors) 사용법에 초점을 맞춰서 진행하겠습니다. AOP에 대한 설명은 다른 포스팅에서 설명하도록 하겠습니다. - 사용법 공식 홈페이지에 ..

[Nest.js] 심화 - 제어의 역전 IoC(Inversion of Control)와 의존관계 주입 DI(Dependency Injection)

- 개요 이번 시간에는 제어의 역전 그리고 의존관계 주입에 대한 개념과 Nest.js 프레임워크에서 어떻게 사용할 수 있는지에 대해 알아보겠습니다. 혹시 Nest.js 프레임워크를 사용하지 않으신 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습니다. [Nest.js] Nest.js 개념 및 프로젝트 생성 [Nest.js] Nest.js 개념 및 프로젝트 생성 - 개요 안녕하세요. 이번 시간에는 Nest.js 개념 및 프로젝트를 생성해 보는 시간을 가져보겠습니다. - Nest.js 개념 Nest.js 프레임워크가 무엇일까요? 저는 처음에 Next.js(React 프레임워크)로 착각했습 any-ting.tistory.com - 기본개념 제어의 역전과 의존관계 주입에 대한 기본 개념을 모르시는 분들은..

[Nest.js] Nest.js API 만들기 (12) - API 문서화(Swagger)

- 개요 안녕하세요. 이번 시간에는 지난 시간까지 만들었던 API 서버에 문서화를 진행해보겠습니다. Nest.js에는 OpenAPI Swagger를 지원합니다. Swagger를 활용해서 API 문서화를 진행하겠습니다. 혹시 Swagger에 대해 잘 모르시는 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습니다. [Swagger] Swagger UI를 활용한 내부 API Client 구축 [Swagger] Swagger UI를 활용한 내부 API Client 구축 - 개요 안녕하세요. 이번 글에서는 Swagger UI를 활용한 API 문서화 및 Client 서버 구축에 대해서 알아보겠습니다. 일단 Swagger라는 기술은 API를 설계하고 문서화를 해주는데 도움을 주는 기술입니다. any-ting...

[Nest.js] Nest.js API 만들기 (11) - 파일 업로드(Multer)

- 개요 안녕하세요. 이번 시간에는 파일 업로드를 진행해 보겠습니다. Multer를 사용해서 파일 업로드를 진행해보겠습니다. Multer는 Node.js에서 대표적인 파일 업로드 라이브러리입니다. Nest.js 공식 홈페이지에서도 Multer를 통해 업로드하는 방식을 소개하고 있습니다. Nest.js 공식 홉페이지 : https://docs.nestjs.kr/techniques/file-upload Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScrip..

[Nest.js] Nest.js API 만들기 (10) - 예외처리(Exception Filters)

- 개요 안녕하세요. 이번 시간에는 Nest.js에서 Filter를 사용해서 에러를 처리하는 방법에 대해 알아보겠습니다. - 개념 Nest.js에서 여러 로직을 처리하다 보면 예외처리를 해야 하는 상황이 있습니다. 간혹 DB에서 특정 유저를 조회했을 때 해당 유저가 없다면, 클라리언트에게 유저가 존재하지 않다는 정보를 알려줘야 합니다. 또는 SQL구문에 문제가 있어 처리해야 하는 상황에서도 우리는 예외처리를 해야 합니다. 우리는 서버에서 수많은 로직들에 예외처리를 해야 하고 해당 예외 정보를 수집해, 유지보수해야 합니다. Nest.js에서는 아래와 같이 Filter를 설명하고 있습니다. 개발자가 특별한 예외를 처리하지 않는다면 Nest.js에서는 내장된 예외 레이어가 이를 처리한다고 나와있습니다. 그렇다..

[Nest.js] Nest.js API 만들기 (9) - Authentication(Passport-Jwt) & Guards 로그인 인증

- 지난 시간 안녕하세요. 지난 시간에는 Passport-Local 방식을 사용해서 일반 로그인 기능을 구현해봤습니다. 혹시 놓치고 오신 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습니다. [Nest.js] Nest.js API 만들기 (8) - Authentication(Passport, Passport-Local) & Guards 로그인 [Nest.js] Nest.js API 만들기 (8) - Authentication(Passport, Passport-Local) & Guards 로그인 import { Strategy } from 'passport-local'; import { PassportStrategy } from '@nestjs/passport'; import { Injectabl..

[Nest.js] Nest.js API 만들기 (8) - Authentication(Passport, Passport-Local) & Guards 로그인

- 개요 안녕하세요. 이번 시간에는 Nest.js에서 로그인 기능을 구현해보는 시간을 가져보겠습니다. Nest.js 공식 홈페이지에서는 Passport를 권장하고 있습니다. 공식 홈페이지: https://docs.nestjs.com/security/authentication Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Orient..

[Nest.js] Nest.js API 만들기 (6) - TypeORM API서버 적용(CRUD)

- 지난 시간 안녕하세요. 지난 시간에는 TypeORM 설정 및 연결하는 방법에 대해 알아봤습니다. 혹시 놓치고 오신 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습니다. [Nest.js] Nest.js API 만들기 (5) - TypeORM 개념 및 설치 data.id == id); } /** * @author Ryan * @description 단일 유저 수정 * * @returns {User} users */ setUser(id: number, updateUserDto: UpdateUserDto): User { return users.find((data) => { if (data.id == id) return (data.name = updateUserDto.name); }); } /** *..

[Nest.js] Nest.js API 만들기 (5) - TypeORM 개념 및 설치

- 개요 안녕하세요. 이번 시간에는 TypeORM을 Nest.js에 적용하는 시간을 가져 보도록 하겠습니다. TypeORM은 ORM 기술 중 하나로 "객체와 관계형 데이터 베이스를 매핑(연결)을 통해 객체 모델과 관계형 모델 간 불일치를 해결" 함으로써 객체와 데이터베이스의 변형에 유연하게 사용할 수 있는 기술입니다. ORM(Object Relational Mapping) - 설치 및 설정 TypeORM을 사용하기 위해서는 몇 가지 모듈이 필요합니다. @nestjs/typeorm - Nest.js에서 TypeORM을 사용하기 위해 연동시켜주는 모듈 typeorm - 실제 TypeORM(TypeORM은 JavaScript를 지원합니다) mysql2 - MySQL 데이터베이스 연결 시 사용 #npm npm ..

[Nest.js] Nest.js API 만들기 (4) - 미들웨어(Middleware)

- 개요 안녕하세요. 이번 시간에는 미들웨어(Middleware)에 대해 알아보겠습니다. Express에서 미들웨어를 사용하신 분들은 어렵게 느껴지지 않으시겠지만, 미들웨어 개념을 모르시는 분들도 있기 때문에 최대한 열심히 설명하겠습니다. - 개념 미들웨어(Middleware)란 무엇일까요? 단어를 나눠보면 Middle - 가운데, ware - 물건 = 가운데 물건?... 해석이 좀 이상 하지만 정확히 말하면 소프트웨어 사이에 중간 매개체 역할을 하는 소프트웨어라고 생각하시면 됩니다. 미들웨어를 왜 사용할까요? 특정 라우터에 접근 시 "인증&검증, 로그성 데이터를 기록할 때" 꼭! 거쳐야 하는 로직이 있을 때 사용합니다. - 사용법 간단하게 인증 미들웨어를 만들어 활용해보는 시간을 가져보겠습니다.(실제 ..