본 포스팅은 NestJS 공식사이트을 기반으로 작성되었습니다.NestJS 서버를 구성하기 위해 먼저 @nestjs/cli 를 설치해야 한다.설치가 끝났다면 프로젝트를 생성해보자.project-name은 적당히 원하는 이름을 지어주면 된다.설치 도중에 패키지 매니저를 무
Controllers 컨트롤러는 사용자의 요청에 따른 응답을 돌려주는 역할을 하는 기능이다. 컨트롤러는 앤드포인트 라우팅을 통해 각 컨트롤러가 받을 요청을 분류하고, 목적에 따라 여러개의 컨트롤러를 생성하기도 한다. 컨트롤러 만들어보기 nest에선 기본적인 유효성검
컨트롤러는 요청을 알맞은 기능에 매칭해주고 알맞는 응답을 처리하는 역할을 가진다.여기서 알맞은 기능을 담당하는 것이 프로바이더이다.프로바이더에는 주로 서비스(Service), 레포지토리(Repository), 팩토리(Factory)등의 형태가 있다.프로바이더 인스턴스는
모듈은 여러 기능들이 합쳐서 하나의 작업이 되는 단위를 뜻한다.NestJS에서는 하나의 루트모듈이 무조건 존재하게되고 이것은 우리가 새로운 Nest 프로젝트를 만들때 자동으로 생성되는 app.modeul.ts이 그것이다. 이렇게 모듈을 나누는 이유는 책임을 나누고 응집
파이프는 요청이 라우터 핸들러로 전달되기 전에 요청 객체를 변환 할 수 있다.파이프는 보통 2가지 목적으로 사용한다.변환(Transformation): 입력데이터를 원하는 형식으로 변환유효성 검사(Validation) : 입력데이터의 유효성 검사왜 파이프에서 처리하는가
데이터베이스 준비 로컬 PC에 DB를 설치해도 되지만, 다른 프로젝트와 개발 환경을 분리하기 위해서 도커를 사용하겠다. 만약 도커를 모른다면 도커 게시물을 참고 바란다. MariaDB 설정 DB이름 some-mariadb 유저이름 artlogy 비밀번호 1213 R
OpenAPI는 RESTful API를 정의하고 설명하는 데 사용하는 언어에 구애 받지 않는 형식이라고 보면된다. 가장 많이 쓰는건 Swagger이며, 나도 스웨거를 기준으로 설명해볼것이다.설치swagger.config.ts가장 기본이되는 설정 형태이다.나중에 Auth
Pipe단에서 추가되는 내용이다. Pipe단에 다 다루기엔 볼륨이 좀 커서 따로 빼서 알려주고자 한다. NestJS에는 어노테이션을 이용하여 쉽게 유효성 검사기능을 추가할 수 있는 방법이 존재한다.설치Nest에서 제공하는 ValidatePipe를 전역으로 적용한다.이때
일반적으로 미들웨어는 라우트 핸들러가 요청을 처리하기 전에 수행되는 컴포넌트를 뜻한다.물론 응답을 클라이언트에 보내기 전에 처리 할 수도 있다.어떤 형태의 코드라도 수행할 수 있다.요청과 응답에 변형을 가할 수 있다.요청-응답 주기를 끝낼 수 있다.여러개의 미들웨어를
인증과 인가 인증은 올바른 접근인지 확인하는 작업을 뜻하고, 인가는 요청한 사용자의 권한을 확인 하는 작업이다. 비유적으로 말하자면, 회사에서 사원증을 검사하여 회사내부사람인지 아닌지 확인 하는건 인증 해당 사원증으로 어떤 자료까지 접근할 수 있는지 확인하는건 인가
Logger 서비스가 커지면 커질수록 동작 과정을 남기고 추적하는 일이 중요해진다. 이슈가 발생한 지점과 콜스택이 함께 제공된다면 디버깅이 매우 수월해질것이다. 내장 로거 내장 Logger는 @nest/common패키지로 제공되며, 로깅옵션을 조절하면 다음과 같이
개발한지 얼마 되지 않은 주니어 개발자들이 가장 많이 실수하는게, 예외처리를 꼼꼼히 하지 않는다는 점이다. 모든것은 예외가 발생할 수 있고 당장 잘되던 것도 사용자가 늘어나거나 유지보수가 진행됌에 따라 얼마든지 예외가 발생하는 법이다. 따라서 예상되거나 발생하면 치명적
인터셉터(Interceptor) [Nest AOP]의 마지막 챕터 인터셉터의 기능과 구현법을 알아보자. 메서드 실행 전/후 추가 로직 바인딩 함수에서 반환된 결과를 반환 함수에서 던져진 예외를 변환 기본 기능의 동작을 확장 특정 조건에 따라 기능을 완전히 재정의(e
서비스를 개발하다 보면 주기적으로 동일한 작업을 처리해야 하는 경우가 생긴다.예를 들어 사용자가 어떤 유료 서비스를 구독하고 있고 매달 결제가 일어난다고 했을 때매일 특정 시간에 결제일이 된 고객의 카드 결제가 일어나도록 해야한다. 이런 주기적인 반복 작업을 태스트(T
서비스를 운용하다 보면 트래픽이 늘어나거나 DB에 부하가 생기기도 한다.장애는 언제 어디에서나 발생 할 수 있기때문에 서버의 건강(?)파악은 늘 체크 할 수 있어야한다.Nest에는 Terminus라는 헬스 체크 패키지를 제공한다.HttpHealthIndicatorTyp
CRUD와 같은 기능을 구축할 때 기본 항목 유형을 변형하여 사용하면 편리하다.Nest는 이 작업을 보다 편리하게 만들기 위해 유형 변환을 수행하는 여러 유틸리티 함수를 제공하고 있다.입력 유형의 모든 속성이 선택 사항으로 설정된 유형 (클래스)을 반환한다.예를 들어
Nest.js는 사용자의 요청이 있을 때 아래의 단계를 거친다.요청middleware (미들웨어) guards (가드)주로 permission (인증) 처리를 할 때 사용pre-interceptors (인터셉터) 주로 post-interceptor를 위한 변수 선언,
FileUpload 먼저 파일업로드에 필요한 multer 패키지를 받아주자. 위 패키지가 설치되면 Express.Multer.File유형을 사용할 수 있다. 단일파일 업로드 가장 간단한 단일 파일업로드는 다음과 같이 처리한다. FileInterceptor(fiel