[nodejs] GraphQL 쿼리 언어 인터페이스 및 유니온 타입 활용

GraphQL 소개

GraphQL은 페이스북에서 개발한 쿼리 언어 및 실행 환경으로, 클라이언트가 서버로부터 얻고 싶은 데이터를 정확히 요청할 수 있도록 하는 기술입니다.

GraphQL 쿼리 언어

GraphQL은 데이터를 얻기 위한 강력한 쿼리 언어를 제공합니다. 이 쿼리 언어를 사용하면 개발자가 원하는 데이터의 구조를 정확하게 명시할 수 있으며, 불필요한 데이터를 가져오지 않고 필요한 데이터만을 효율적으로 가져올 수 있습니다.

예를 들어, 다음은 GraphQL 쿼리 언어의 예시입니다.

query {
  user(id: "123") {
    name
    email
    age
  }
}

위 쿼리는 id가 “123”인 사용자의 이름, 이메일, 나이 정보를 요청하는 것을 나타냅니다.

인터페이스 활용

GraphQL에서는 인터페이스를 활용하여 여러 타입을 통일된 방식으로 다룰 수 있습니다. 이를 통해 코드의 재사용성을 증가시키고, 유연하고 일관된 데이터 모델을 유지할 수 있습니다.

예를 들어, 다음은 GraphQL에서 인터페이스를 정의하고 사용하는 예시입니다.

interface Animal {
  name: String!
  age: Int!
}

type Dog implements Animal {
  name: String!
  age: Int!
  breed: String!
}

type Cat implements Animal {
  name: String!
  age: Int!
  color: String!
}

위 코드에서 Animal 인터페이스를 정의하고, DogCat 타입이 해당 인터페이스를 구현하고 있음을 볼 수 있습니다.

유니온 타입 활용

때로는 서로 다른 타입의 결과를 동시에 다루어야 할 때가 있습니다. 이때 GraphQL에서는 유니온 타입을 활용할 수 있습니다. 유니온 타입을 사용하면 여러 타입의 결과를 하나로 합쳐서 다룰 수 있습니다.

예를 들어, 다음은 GraphQL에서 유니온 타입을 사용하는 예시입니다.

union SearchResult = Photo | Person | Post

type Photo {
  url: String!
}

type Person {
  name: String!
}

type Post {
  title: String!
  content: String!
}

위 코드에서 SearchResultPhoto, Person, Post 타입 중 하나일 수 있음을 나타내고 있습니다.

마치며

GraphQL은 강력한 쿼리 언어 및 타입 시스템을 통해 데이터를 효율적으로 다룰 수 있게 해줍니다. 인터페이스와 유니온 타입을 활용하여 데이터 모델을 유연하게 구성할 수 있으며, 클라이언트가 필요로 하는 정확한 데이터를 효율적으로 요청할 수 있습니다.


참고 자료: