GraphQL 세계에서 많은 기사는 인증(authentication) 또는 부작용(side-effects)과 같은 항목을 처리하는 방법에 대해 불평합니다. 비즈니스 로직에 넣어야 합니까? 예를 들어 권한 부여 논리와 같이 쿼리와 뮤테이션을 향상시키기 위해 고차 함수를 사용해야 합니까? 또는 스키마 지시어를 사용하십시오. 어쨌든 한가지 답은 없습니다.
Nest 생태계는 guards 및 interceptors와 같은 기존 기능을 사용하여 이 문제를 해결하려고 합니다. 그 배후의 아이디어는 중복성을 줄이고 또한 체계적이고 읽기 쉽고 일관성 있는 응용 프로그램을 만드는 데 도움이 되는 도구를 제공하는 것입니다.
그러나 가드와 인터셉터 모두에 의해 수신되는 ExecutionContext는 약간 다릅니다. GraphQL 리졸버에는 각각 root, args, context 및 info와 같은 별도의 인수 세트가 있습니다. 따라서 주어진 ExecutionContext를 GqlExecutionContext로 변환해야 합니다. 기본적으로 매우 간단합니다.
GqlExecutionContext는 getArgs(), getContext()등과 같은 각 인수에 해당하는 메소드를 노출합니다. 이제 현재 처리된 요청에 특정한 모든 인수를 손쉽게 선택할 수 있습니다.