[typescript] GraphQL 스키마의 관계 정의

GraphQL은 강력한 쿼리 언어이며, 서버 측 스키마에서 다양한 유형 간의 관계를 정의할 수 있습니다.

1. 오브젝트 유형 (Object Types)

오브젝트 유형은 GraphQL 스키마에서 가장 기본이 되는 유형입니다. 이는 서비스에서 반환하거나 가져올 수 있는 객체를 정의합니다. 예를 들면, UserPost와 같은 것들이 있습니다.

type User {
  id: ID!
  name: String!
  posts: [Post]
}

위 코드에서 User 오브젝트는 Post 유형의 배열을 포함하고 있습니다.

2. 인터페이스 (Interfaces)

인터페이스는 여러 객체 유형 간에 공통 필드나 동작을 묶을 때 사용됩니다. 다음의 예시에서 Animal 인터페이스는 DogCat 오브젝트 유형에서 사용됩니다.

interface Animal {
  id: ID!
  name: String!
  makeSound: String!
}

type Dog implements Animal {
  id: ID!
  name: String!
  makeSound: String!
  breed: String!
}

type Cat implements Animal {
  id: ID!
  name: String!
  makeSound: String!
  color: String!
}

3. 연결 (Relations)

GraphQL은 오브젝트 간의 관계를 쉽게 정의할 수 있습니다. 이를 통해 User 오브젝트와 Post 오브젝트 사이의 관계를 정의할 수 있습니다.

type User {
  id: ID!
  name: String!
  posts: [Post]
}

type Post {
  id: ID!
  title: String!
  content: String!
  author: User
}

위의 코드에서 UserPost 오브젝트 사이에는 일대다 관계가 정의되어 있습니다.

GraphQL을 사용하면 다양한 유형 간의 관계를 간단하게 정의할 수 있어 개발자가 데이터를 효율적으로 가져오고 관리할 수 있습니다.


참고 자료: