GraphQL은 그저 명세이기 때문에, 그래프큐엘에 대한 데이터를 오가는 라이브러리가 필요하다.
다양한 언어마다 수많은 것들이 존재하는데 (아래는 공식 홈페이지의 언어 지원목록)
나는 웹 프로그래밍을 배우고 있기 때문에 조금 더 원활한 소통(?)이 가능하기 위해
백엔드에서 쓸 수 있는 Apollo Server를 사용하고 있다.
기본적인 설정은 크게 어려움이 없는데 특별한 경우 사용해야하는 것이 하나 있어서 적어놓으려고 한다.
아래는 앱모듈에서 선언해놓은 코드
GraphQLModule.forRoot<ApolloDriverConfig>({ driver: ApolloDriver, autoSchemaFile: 'src/commons/graphql/schema.gql', context: ({ req, res }) => ({ req, res }), }),
그것은 바로 마지막 줄에 있는 context에 관련된 이야기다.
완전 js를 처음 공부하는 사람이라면 모르겠지만, 조금이라도 맛을 본 사람은 정말 대충
알고 있는 용어다.
나도 정확하게 이해는 못해서 내가 생각하고 있는 것은
실행이 되었을 경우 그 코드의 최상단으로 이해를 하고 있는 상태다.
window는 정말 큰 개념이라 조금 더 위에 있는 느낌?
context를 선언해서 사용을 할 경우에 저것을 받아서 데이터를 보면 진짜 별 데이터들이 엄청 많이 들어있다.
그럼 저걸 왜 굳이 선언을 해야하나? 라는 생각이 들 수 있는데, 인증, 인가 과정에서는 토큰 정보가 헤더에 담겨오기 때문에 그것을 꺼내서 사용하기 위해 컨텍스트를 선언해서 사용해야만 한다.