[nodejs] GraphQL 쿼리 언어 변수 사용

GraphQL은 클라이언트에서 서버로 데이터를 요청할 때 사용하는 강력한 쿼리 언어입니다. 이 쿼리 언어를 사용하면 클라이언트는 필요한 데이터만을 요청할 수 있고, 서버는 정확히 그에 맞는 응답을 제공할 수 있습니다. 이때, GraphQL에서 변수를 사용하면 쿼리의 유연성을 높일 수 있습니다.

변수 선언하기

GraphQL에서 변수를 사용하기 위해서는 쿼리나 뮤테이션에 $ 기호를 사용하여 변수를 선언해야 합니다. 변수를 선언할 때는 변수의 이름과 타입을 지정해주어야 합니다. 예를 들면 다음과 같습니다.

query ($userId: ID!) {
  user(id: $userId) {
    name
    email
  }
}

위의 예제에서 $userId는 ID 타입의 변수를 나타내며, !는 이 변수가 필수적으로 제공되어야 함을 의미합니다.

변수 사용하기

변수를 사용하기 위해서는 쿼리나 뮤테이션을 실행할 때 실제 변수의 값과 함께 전달해주어야 합니다. 이때 변수의 이름과 값을을 매칭시켜 주어야 합니다. 예를 들면 다음과 같습니다.

{
  "userId": "123"
}

위의 예제에서 "userId"는 앞서 선언된 $userId 변수에 실제로 전달되는 값입니다.

예시

다음은 Node.js에서 GraphQL을 사용하여 변수를 이용한 쿼리 예시입니다.

const { ApolloClient, InMemoryCache, gql } = require('@apollo/client');

const client = new ApolloClient({
  uri: 'http://example.com/graphql',
  cache: new InMemoryCache()
});

const userId = '123';
client.query({
  query: gql`
    query GetUserData($userId: ID!) {
      user(id: $userId) {
        name
        email
      }
    }
  `,
  variables: { userId }
})
  .then(result => console.log(result.data))
  .catch(error => console.error(error));

위의 예제에서 GetUserData 쿼리는 $userId 변수를 사용하여 특정 사용자의 이름과 이메일 정보를 요청하고 있습니다.

GraphQL에서 변수를 사용하면 동적으로 쿼리를 구성하고 다양한 상황에 대응할 수 있는 강력한 기능을 사용할 수 있습니다.

참고 자료