분류 전체보기(12)
-
Interceptors
Interceptors NestInterceptor 인터페이스를 구현하고 @Injectable() 데코레이터가 어노테이션으로 붙는 클래스이다. interceptor 는 AOP 관점에서 탁월한 능력을 몇가지 갖고 있다. method 가 실행되기 전과 후에 외부 로직을 bind 할 수 있다. 함수에 return 을 변형시킬 수 있다. 함수에 예외를 변형시킨다. 함수에 기본동작을 확장한다. 특정 조건에 따라 완전히 함수를 오버라이딩 할 수 있다. Basics Interceptor 는 intercept() 메서드를 구현한다. intercept() 메서드는 두개의 매개변수를 갖는다. 하나는 ExecutionContext 인스턴이다( guard 와 정확히 같은 객체). ExecutionContext 는 Argume..
2022.04.03 -
Guards
Guards Guard 는 CanActivate 인터페이스를 구현하는 @Injectable() 데코레이터가 달린 클래스이다. Guard 는 request 가 실행 가능한지 여부를 판단한다. 흔히 이것을 authorization이라고 부르며 Express 에서는 대부분 midlleware 에서 처리하여 특정 컨트롤러와 강하게 연결되는것을 막았다. 그러나 middleware 에 가장 큰 문제는 next 이후에 어떤 함수가 실행되는지 모른다는 것에 있다. Guard 는 ExecutionContext 를 알수 있고 request/response 싸이클에 선언적으로 사용할 수 있어서 코드를 더 읽기좋고 선언적으로 만들어 준다. Guard 는 각 미들웨어 이후에 실행되지만 인터셉터나 파이프 이전에 실행된다. Aut..
2022.04.03 -
Exception filters
Exception filters Nest 에는 애플리케이션 전체에서 처리되지 않은 모든 예외를 처리하는 레이어가 내장되어 있다. 처리 되지 않은 예외가 여기에서 잡힌다. 기본적으로 이 작업은 HttpException 유형의 예외를 처리하는 내장 전역 예외 필터에 의해 수행된다. 예외가 인식되지 않는 경우(HttpException 도 아니고, HttpException에서 상속한 클래스도 아님) 기본 제공 예외 필터는 다음과 같은 기본 JSON 응답을 새성한다. { "statusCode": 500, "message": "Internal server error" } http-erros 라이브러를 사용한다. 기본적으로 statusCode와 message 가 채워져서 응답으로 보내진다. Throwing stand..
2022.04.03 -
Middleware
Middleware 미들웨어는 라우터 핸들러 전에 호출되는 함수이다. 기본적으로 express 에 middleware 와 동일하다. class 와 function 모두 사용할 수 있고, class 로 선언하는 경우에는 NestMiddleware 인터페이스를 구현해야 한다. import { Injectable, NestMiddleware } from '@nestjs/common'; import { Request, Response, NextFunction } from 'express'; @Injectable() export class LoggerMiddleware implements NestMiddleware { use(req: Request, res: Response, next: NextFunction) ..
2022.04.03 -
Modules
Modules @Module() 데코레이터는 어플리케이션 구성에 필요한 metadate를 공급한다. 애플리케이션은 최소 한개 이상의 모듈이 존재햐아 하고 구성 요소를 구성하는 효과적인 방법으로 모듈을 사용한다. 아주 작은 애플리케이션이 아닌 일반적인 애플리케이션은 여러가지 모듈을 가진다. 모듈은 provider 를 캡슐화 한다. 즉 현제 모듈의 일부도 아니고 가져온 모듈에서 내보낸 것도 아닌 provider 를 주입하는것은 불가능하다. Feature modules 생성한 controller와 service 는 어떤 기능에 연관되 있기 때문에 하나의 모듈로 만들어서 관리하는 것이 좋다. netst g module 으로 모듈을 생성할 수 있다. Shared modules nest 에서 모듈은 기본적으로 si..
2022.04.03 -
Providers
Providers Nest 에는 provider 간의 관계를 해결하는 inversion of control (IOC)가 내장되어 있다. Optional providers 때때로 설정 객체와 같은 것을 optional provider 로 받을 필요가 있다. 설정이 등록되지 않으면 기본 값을 갖도록 하면 되기때문에 무조건 받을 필요가 없기 때문이다. 이럴때에는 provider에 @Optional 데코레이터를 붙혀서 사용한다. import { Injectable, Optional, Inject } from '@nestjs/common'; @Injectable() export class HttpService { constructor(@Optional() @Inject('HTTP_OPTIONS') private ..
2022.04.03