Back-end
-
1. ControllerController는 요청을 받아들이고 클라이언트에게 응답을 반환하는 역할을 합니다. controller의 목적은 애플리케이션의 구체적인 요청을 받는 것입니다. routing 이라는 메커니즘은 어느 controller가 어느 요청을 받을지 관리하는 역할을 수행합니다. 대부분의 경우, 각 controller는 하나 이상의 라우트를 갖고 각각의 라우트는 모두 다른 기능을 수행합니다. 기본 controller를 만들기 위해 Nest에서는 클래스와 데코레이터를 사용합니다. 데코레이터는 클래스를 필요한 메타데이터와 연결시켜주고 Nest가 라우팅 맵(routing map)을 생성할 수 있도록 합니다. 1-1. Routing다음 예시에 @Controller() 데코레이터가 사용..
[NestJS | Docs] Controller 개념정리1. ControllerController는 요청을 받아들이고 클라이언트에게 응답을 반환하는 역할을 합니다. controller의 목적은 애플리케이션의 구체적인 요청을 받는 것입니다. routing 이라는 메커니즘은 어느 controller가 어느 요청을 받을지 관리하는 역할을 수행합니다. 대부분의 경우, 각 controller는 하나 이상의 라우트를 갖고 각각의 라우트는 모두 다른 기능을 수행합니다. 기본 controller를 만들기 위해 Nest에서는 클래스와 데코레이터를 사용합니다. 데코레이터는 클래스를 필요한 메타데이터와 연결시켜주고 Nest가 라우팅 맵(routing map)을 생성할 수 있도록 합니다. 1-1. Routing다음 예시에 @Controller() 데코레이터가 사용..
2024.01.31 -
이전 포스팅들을 통해 NestJS와 관련된 많은 용어와 개념들에 대해서 정리를 해보았습니다. 이번에는 그러한 개념들을 NestJS에서 실제 사용하는 방식에 대해서 알아보려고 합니다. 해당 포스팅을 잘 이해하기 위해서는 이 글을 먼저 읽고 보시는 것을 추천드립니다! 1. Controller NestJS로 프로그래밍을 시작하는 가장 간단한 방법은 모든 일을 다 처리하는 Controller를 하나 만드는 것 입니다. validation부터 데이터베이스와 연동하여 비지니스 로직을 다루는 요청 처리까지 말이죠. 코드는 다음과 같습니다: 수행하는 기능은 인자로 받은 숫자에 80을 곱한 값으로 변환하여 해당 값을 응답하는 것입니다. // simpel.controller.ts /* GET /simple/convert/..
[NestJS] NestJS 구조 살펴보기이전 포스팅들을 통해 NestJS와 관련된 많은 용어와 개념들에 대해서 정리를 해보았습니다. 이번에는 그러한 개념들을 NestJS에서 실제 사용하는 방식에 대해서 알아보려고 합니다. 해당 포스팅을 잘 이해하기 위해서는 이 글을 먼저 읽고 보시는 것을 추천드립니다! 1. Controller NestJS로 프로그래밍을 시작하는 가장 간단한 방법은 모든 일을 다 처리하는 Controller를 하나 만드는 것 입니다. validation부터 데이터베이스와 연동하여 비지니스 로직을 다루는 요청 처리까지 말이죠. 코드는 다음과 같습니다: 수행하는 기능은 인자로 받은 숫자에 80을 곱한 값으로 변환하여 해당 값을 응답하는 것입니다. // simpel.controller.ts /* GET /simple/convert/..
2024.01.29 -
이번 시간에는 서비스를 운영하면서 상당히 중요하게 작용하는 요소 중 하나인 로깅을 NestJS 어떻게 하면 잘 할 수 있는지에 대해 알아보는 시간을 갖도록 하겠습니다. 완벽한 로깅 시스템을 갖추면 버그가 발생하더라도 우리는 로그를 그저 읽고 해당 요청 동안 어떤 일이 발생했는지 완벽히 이해하고 로컬 서버 또는 DB 워크벤치에 무슨 일이 벌어지는지 정확히 시뮬레이션 할 수도 있습니다. Interceptor의 기본 개념을 이용하여 로깅을 하는 방법은 여기를 참고하세요. 1. 로깅 기초 1-1. Middleware + console.log로 로깅하기 요청 로깅 1. 미리 정의된 app.controller의 호출을 가로채는 logger.middleware를 다음과 같이 정의합니다. import { Injecta..
[NestJS] NestJS에서 로깅(Logging)하기 - 1 (전문적으로 로깅하기)이번 시간에는 서비스를 운영하면서 상당히 중요하게 작용하는 요소 중 하나인 로깅을 NestJS 어떻게 하면 잘 할 수 있는지에 대해 알아보는 시간을 갖도록 하겠습니다. 완벽한 로깅 시스템을 갖추면 버그가 발생하더라도 우리는 로그를 그저 읽고 해당 요청 동안 어떤 일이 발생했는지 완벽히 이해하고 로컬 서버 또는 DB 워크벤치에 무슨 일이 벌어지는지 정확히 시뮬레이션 할 수도 있습니다. Interceptor의 기본 개념을 이용하여 로깅을 하는 방법은 여기를 참고하세요. 1. 로깅 기초 1-1. Middleware + console.log로 로깅하기 요청 로깅 1. 미리 정의된 app.controller의 호출을 가로채는 logger.middleware를 다음과 같이 정의합니다. import { Injecta..
2024.01.26 -
이번 포스팅에서는 NestJS에서 데이터베이스를 사용하는 경우 custom validation을 어떤 방식으로 할 수 있는지 단위 테스트(Unit testing)과 함께 알아보도록 하겠습니다. 추가적으로 Error Handling은 또 어떤 식으로 할 수 있는지 알아보도록 합시다. 1. Class Validation 여기서 사용된 기술 스택은 다음과 같습니다. 데이터베이스: MySQL ORM 라이브러리: TypeORM validation 라이브러리: class-validator 요청과 함께 날라온 데이터를 validate(검증)하는 방식은 여러 가지가 존재합니다. 우리는 더 가독성 있는 코드를 만들면서 컨트롤러와 데이터 검증을 분리할 수 있도록 하는 NestJS의 class-validator를 사용할 수..
[NestJS] Validation(검증) 심화버전이번 포스팅에서는 NestJS에서 데이터베이스를 사용하는 경우 custom validation을 어떤 방식으로 할 수 있는지 단위 테스트(Unit testing)과 함께 알아보도록 하겠습니다. 추가적으로 Error Handling은 또 어떤 식으로 할 수 있는지 알아보도록 합시다. 1. Class Validation 여기서 사용된 기술 스택은 다음과 같습니다. 데이터베이스: MySQL ORM 라이브러리: TypeORM validation 라이브러리: class-validator 요청과 함께 날라온 데이터를 validate(검증)하는 방식은 여러 가지가 존재합니다. 우리는 더 가독성 있는 코드를 만들면서 컨트롤러와 데이터 검증을 분리할 수 있도록 하는 NestJS의 class-validator를 사용할 수..
2024.01.25 -
데이터베이스와 데이터베이스 연결을 지원하는 ORM 모듈을 사용하는지 여부에 따라 CRUD 생성 프로젝트 수준이 달라지게 됩니다. NestJS CLI가 제공하는 framing은 굉장히 강력하기 때문에 데이터베이스를 사용하지 않는 수준에서 CRUD 프로젝트를 만든다면 5분이 채 걸리지 않을 수 있습니다. 이번 포스팅에서는 데이터베이스를 사용하는 방식과 그렇지 않은 방식으로 CRUD API를 손쉽게 만들어보는 방법에 대해서 알아보도록 하겠습니다. 1. 데이터베이스를 사용하지 않는 5분 버전 CRUD 1-1. 프로젝트 생성 우리는 NestJS CLI를 통해서 특정 기능의 CRUD 코드 구조를 곧바로 생성해낼 수 있습니다. 다음 명령어를 입력하여 우선 프로젝트를 생성해줍시다. nest new crud-projec..
[NestJS] NestJS CLI로 REST API를 사용한 CRUD 기능 만들기(5분버전 vs. 심화버전) with TypeORM & MySQL데이터베이스와 데이터베이스 연결을 지원하는 ORM 모듈을 사용하는지 여부에 따라 CRUD 생성 프로젝트 수준이 달라지게 됩니다. NestJS CLI가 제공하는 framing은 굉장히 강력하기 때문에 데이터베이스를 사용하지 않는 수준에서 CRUD 프로젝트를 만든다면 5분이 채 걸리지 않을 수 있습니다. 이번 포스팅에서는 데이터베이스를 사용하는 방식과 그렇지 않은 방식으로 CRUD API를 손쉽게 만들어보는 방법에 대해서 알아보도록 하겠습니다. 1. 데이터베이스를 사용하지 않는 5분 버전 CRUD 1-1. 프로젝트 생성 우리는 NestJS CLI를 통해서 특정 기능의 CRUD 코드 구조를 곧바로 생성해낼 수 있습니다. 다음 명령어를 입력하여 우선 프로젝트를 생성해줍시다. nest new crud-projec..
2024.01.24 -
1. Swagger 시작 API 개발 시에 개발할 API에 대한 정보를 시각적으로 표현된 것을 보기 위해서 종종 API 문서를 만들곤 합니다. Swagger라는 open-source 툴을 통해 이러한 작업을 할 수 있는데 NestJS에서도 Swagger와 관련된 라이브러리를 지원하기 때문에 이를 사용하여 API 문서화와 각 엔드포인트에 대한 테스팅을 진행하는 방식에 대해서 알아보도록 하겠습니다. 1-1. Swagger를 사용하는 이유 OpenAPI 사양은 언어에 구애받지 않는 정의 형식으로 RESTful API를 설명하는 데 사용됩니다. Nest는 데코레이터를 활용하여 이러한 사양을 생성할 수 있는 전용 모듈을 제공합니다. Swagger는 일반적으로 RESTful API를 디자인하고 구축하고 문서화할 때..
[NestJS] NestJS에서 Swagger 사용법 (feat. API Documentation)1. Swagger 시작 API 개발 시에 개발할 API에 대한 정보를 시각적으로 표현된 것을 보기 위해서 종종 API 문서를 만들곤 합니다. Swagger라는 open-source 툴을 통해 이러한 작업을 할 수 있는데 NestJS에서도 Swagger와 관련된 라이브러리를 지원하기 때문에 이를 사용하여 API 문서화와 각 엔드포인트에 대한 테스팅을 진행하는 방식에 대해서 알아보도록 하겠습니다. 1-1. Swagger를 사용하는 이유 OpenAPI 사양은 언어에 구애받지 않는 정의 형식으로 RESTful API를 설명하는 데 사용됩니다. Nest는 데코레이터를 활용하여 이러한 사양을 생성할 수 있는 전용 모듈을 제공합니다. Swagger는 일반적으로 RESTful API를 디자인하고 구축하고 문서화할 때..
2024.01.23 -
이제 드디어 NestJS로 어떻게 백엔드 서버를 만들 수 있는지에 대해 알아보도록 하겠습니다. NestJS는 강력한 typing, interfaces, decorator와 같은 기능을 추가하는 TypeScript를 기반으로 구축됩니다. NestJS는 Angular로부터 강한 영감을 받았고 실제로 Dependency Injection, modules, controller와 같은 대부분의 동일한 기능들을 제공합니다. Angular의 이러한 요소는 확장가능하도록 디자인 되어 개발자들이 NestJS의 기능을 확장하기 위해 자기들의 모듈과 플러그인을 만들 수 있다는 것을 의미합니다. 이번 포스팅에서는 NestJS 공식문서를 참고하여 우리가 앞서 배워왔던 개념들을 실제로 어떻게 적용할 수 있는지, 코드 위주로 살..
[NestJS] NestJS 시작 (설치 & 구성요소 맛보기)이제 드디어 NestJS로 어떻게 백엔드 서버를 만들 수 있는지에 대해 알아보도록 하겠습니다. NestJS는 강력한 typing, interfaces, decorator와 같은 기능을 추가하는 TypeScript를 기반으로 구축됩니다. NestJS는 Angular로부터 강한 영감을 받았고 실제로 Dependency Injection, modules, controller와 같은 대부분의 동일한 기능들을 제공합니다. Angular의 이러한 요소는 확장가능하도록 디자인 되어 개발자들이 NestJS의 기능을 확장하기 위해 자기들의 모듈과 플러그인을 만들 수 있다는 것을 의미합니다. 이번 포스팅에서는 NestJS 공식문서를 참고하여 우리가 앞서 배워왔던 개념들을 실제로 어떻게 적용할 수 있는지, 코드 위주로 살..
2024.01.22 -
NestJS는 기본적으로 NodeJS 기반에서 동작합니다. 그렇기에 자연스레 NodeJS의 동작 방식에 큰 영향을 받았는데요. NestJS에서는 Express.js를 기본적으로 사용하기 때문에 이번 포스팅에서는 Node.js와 Express.js에 대해서 알아보는 시간을 가져보도록 하겠습니다. 1. Node.js 1-1. Node.js 철학 모든 프로그래밍 플랫폼은 각자 자신들만의 철학과 각종 커뮤니티에서 관례로 따르는 일련의 원칙들과 지침을 제시하고 있습니다. Node.js에서는 이러한 원칙들 중 일부가 제작자인 Ryan Dahl에 의해서 직접 만들어졌으며, 일부는 코어모듈에 기여한 사람들, 커뮤니티에서의 카리스마 있는 인물들, JavaScript의 추세 등으로부터 생겨났습니다. NodeJS에서는 다양..
[NestJS] NestJS를 위한 선수지식 Node.js & Express.js 이해 (feat. Logging, 폴더 구조)NestJS는 기본적으로 NodeJS 기반에서 동작합니다. 그렇기에 자연스레 NodeJS의 동작 방식에 큰 영향을 받았는데요. NestJS에서는 Express.js를 기본적으로 사용하기 때문에 이번 포스팅에서는 Node.js와 Express.js에 대해서 알아보는 시간을 가져보도록 하겠습니다. 1. Node.js 1-1. Node.js 철학 모든 프로그래밍 플랫폼은 각자 자신들만의 철학과 각종 커뮤니티에서 관례로 따르는 일련의 원칙들과 지침을 제시하고 있습니다. Node.js에서는 이러한 원칙들 중 일부가 제작자인 Ryan Dahl에 의해서 직접 만들어졌으며, 일부는 코어모듈에 기여한 사람들, 커뮤니티에서의 카리스마 있는 인물들, JavaScript의 추세 등으로부터 생겨났습니다. NodeJS에서는 다양..
2024.01.21