FrameWork/Nest.js

Next.js custom decorator만들기

Surge100 2022. 8. 7. 15:15

ExecutionContext(실행Context)

 (data: unknown, ctx: ExecutionContext) => {
    const response = ctx.switchToHttp().getResponse();
    return response.locals.jwt;
  }

실행 context이다. switchToHttp(),switchRpc(),switchToWs()같은 것들이 있는 이유는 Nest.js 프레임워크를 사용할 때 HTTP server만 가능한 것이 아니라 동시에 한 server안에서 웹소켓,Rpc,HTTP server 이 세가지 종류를  동시에 돌릴 수 있다.

 

그것들을 모두 하나의 실행 context에서 관리를 하고, 하나의 실행 context안에서 만약에 3개가 동시에 돌아가고 있다고 가정한다. 그리고 그 중에서 HTTP에 대해한 정보를 가져오고 싶다고하면, 실행 context인 ctx에서 메서드 switchToHttp()메서드를 사용해서 http server 정보가져와서 거기에 또 메서드 getResponse()를 사용해서 응답 객체를 가져오라고 할 수있다.

 

ExecutionContext즉 실행context의 접근이 가능하면 실행 context를 부른 함수 안에서 동시에 HTTP에 대한 정보도 가져올 수 있고, 웹소켓에 대한 정보도 가져올 수 있고, Rpc server에 대한 정보도 가져올 수 있다.

 

HTTP server 와 웹소켓 서버간에 소통을 쉽게 해준다거나 그런 것들을 ExecutionContext객체로 관리를 해줄 수 있다. 그래서 context라는 개념이 존재하는 것이다.

 

정리

HTTP, WetSocket,Rpc server에 대한 정보를 ctx: ExecutionContext 객체하나로 접근할 수 있다.

 

[출처-https://www.inflearn.com/course/%EC%8A%AC%EB%9E%99%ED%81%B4%EB%A1%A0%EC%BD%94%EB%94%A9-%EB%B0%B1%EC%97%94%EB%93%9C/dashboard]