GraphQL 개념 더 알아보기

Fragment를 사용하여 재사용성 향상시키기

예제를 바로 봅시다.

type User {
  name: String!
  age: Int!
  email: String!
  street: String!
  zipcode: String!
  city: String!
}

사용자 타입이 있는 경우

주소와 관련된 정보를 사용하여 아래와 같이 나타낼 수 있습니다.

fragment addressDetails on User {
  name
  street
  zipcode
  city
}

그리고 주소에 접근하는 쿼리를 작성하는 경우 아래와 같이 편리하게 사용할 수 있습니다.

{
  allUsers {
    ... addressDetails
  }
}

# 아래와 같은 의미

{
  allUsers {
    name
    street
    zipcode
    city
  }
}

Alias를 이용한 쿼리 결과의 명명

GraphQL의 중요한 강점 중 하나는 한번의 요청으로 다수의 쿼리를 전송할 수 있다는 것입니다. 하지만 요청되는 필드의 구조에 맞추어 응답 데이터의 구조가 형성되므로 같은 필드에 대한 여러 쿼리를 전송할 경우 이름이 겹치는 문제가 발생할 수 있습니다.

{
  User(id: "1") {
    name
  }
  User(id: "2") {
    name
  }
}

이 같은 경우 서버에서 오류를 발생 시킵니다. 이러한 쿼리를 전송 하려면 Alias를 사용해야 합니다.

{
  first: User(id: "1") {
    name
  }
  second: User(id: "2") {
    name
  }
}

반환된 결과

{
  "first": {
    "name": "Alice"
  },
  "second": {
    "name": "Sarah"
  }
}

SDL 심화