[GraphQL] 5. 단일 데이터를 가져오는 query와 다중 데이터를 가져오는 query의 제약

2022. 3. 22. 02:31· Network/GraphQL
목차
  1. GraphQL query 다루기
  2. 단일 데이터를 반환하는 query의 제약
  3. 다중 데이터와 단일 데이터의 필드명 차이
반응형

GraphQL query 다루기

GraphQL은 클라이언트가 요청한 query를 읽어 데이터를 반환하는 역할을 한다. GraphQL이나 SQL과 같은 Query Language는 다양한 요청을 처리할 수 있어야 하므로 다양한 제약과 옵션이 들어간다. 예를 들어 SQL에서는 group by 를 사용하기 위해서는 group 별로 하나의 데이터를 반환할 수 있는 SUM 과 같은 연산을 더하도록 강제하며, ORDER BY 문을 통해 데이터를 정렬할 수 있도록 한다. GraphQL도 SQL과 같은 Query Language 이므로 다양한 제약을 강제하고 옵션을 제공한다.

 

이번글에서는 GraphQL이 단일 데이터를 출력하기 위해 강제하는 제약에 대해 알아볼 것이다.

 

* 아래 링크에서 예시 코드를 실행시켜 볼 수 있다.

 

SWAPI GraphQL API

 

graphql.org

 

 

단일 데이터를 반환하는 query의 제약

우리가 GraphQL을 쓸 때 단일 데이터를 반환하도록 사용하는 경우가 많다. 예를 들어 영화 목록에서 특정 영화만을 출력한다던지, 저장소 목록에서 하나만을 리턴한다던지 하는 경우이다. 다중 데이터를 반환하는 쿼리는 식별자를 지정하지 않아도 되지만, 단일 데이터를 반환하는 query에서 단일 데이터를 반환하는 요청은 식별자를 지정해야 한다.

 

예를 들어 아래와 같이 모든 영화 목록을 출력하는 쿼리에서는 특정한 식별자를 지정하지 않아도 된다.

query QueryFilms {
  allFilms{
    films{
      title
      director
    }
  }
}

 

하지만 아래와 같이 하나의 영화를 출력하는 쿼리에서는 꼭 뒤에 식별자를 붙여줘야 한다. 식별자를 붙이지 않으면 어떤 데이터를 반환하면 될지 모르기 때문이다.

query QueryFilm {
  film(id : 1){
    title
    director
  }
}

 

만약 식별자를 붙이지 않은 채로 위 쿼리를 실행하게 되면 그림1과 같이 식별자를 지정하라는 메세지가 포함된 애러가 발생한다.

 

그림1. 식별자를 지정하지 않은 단일 데이터 필드

 

 

 

다중 데이터와 단일 데이터의 필드명 차이

눈썰미가 좋은 사람이라면 위의 두가지 예시를 보면서 다중 데이터를 가진 필드와 단일 데이터를 출력하는 필드 사이의 차이를 확인했을 것이다. 바로 뒤에 "s"가 붙는지와 아닌지이다. 만약 "s"가 붙으면 다중 데이터를 출력하는 것이서어 식별자를 붙이지 않아도 되고, "s"가 붙지 않으면 단일 데이터여 식별자를 붙여야 한다. 

 

물론 이는 리프 노드에는 적용되지 않는다. 그림1의 title과 director 필드가 리프 노드이다.

*GraphQL은 그래프 구조이기 때문에 리프 노드란 말을 쓰는데, 리프 노드란 맨 안쪽의 노드를 뜻한다. 

반응형
저작자표시 비영리 변경금지
  1. GraphQL query 다루기
  2. 단일 데이터를 반환하는 query의 제약
  3. 다중 데이터와 단일 데이터의 필드명 차이


 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com

'Network/GraphQL' 카테고리의 다른 글
  • [GraphQL] 7. GraphQL 의 Query Alias(별칭) 사용해 필드명 바꾸기
  • [GraphQL] 6. first, last 사용해 query의 필드가 반환하는 데이터 개수 제한하기
  • [GraphQL] 4. GraphQL의 introspective query(내향성 쿼리) 사용해 schema, field 정보 조회하기
  • [GraphQL] 3. GraphQL의 query 한 번에 정리하기
Dev.Cho
Dev.Cho
'조세영의 Kotlin World'는 Kotlin를 전문적으로 다루는 개인 기술 블로그입니다. Kotlin 세계에 대한 양질의 자료를 제공하며 Kotlin, Android, Spring, CI, CD 분야에 대해 다룹니다.
Dev.Cho
조세영의 Kotlin World
Dev.Cho
전체
오늘
어제

블로그 메뉴

  • LinkedIn
  • GitHub
  • 분류 전체보기 (491)
    • Kotlin (104)
      • Class and Interface (19)
      • Variable and Function (8)
      • Modifier (5)
      • Collection (14)
      • Time (8)
      • 동시성 제어 (7)
      • Reactive Programming (2)
      • Paradigm (2)
      • Kotlin 자료구조 (15)
      • Design Patterns (11)
      • Algorithm (3)
      • Exception (1)
      • 기타 (9)
      • Update History (0)
    • Coroutines (32)
      • Coroutine Basics (18)
      • Flow (9)
      • CoroutineScope (3)
      • Debugging (2)
    • Testing Codes (28)
      • Test 기본 (3)
      • JUnit5 (9)
      • MockK (6)
      • Testing Coroutines (1)
      • Testing Android (8)
      • Test 기타 (1)
    • Spring (50)
      • Dependency Injection (18)
      • Settings (5)
      • REST API (0)
      • DevTools (1)
      • MVC (18)
      • Error (2)
      • MongoDB (2)
      • Database (4)
    • Android (39)
      • Architecture (2)
      • Component (5)
      • Manifest (1)
      • Lifecycle (2)
      • Dependency Injection (17)
      • Resource (1)
      • Storage (1)
      • Security and Optimization (1)
      • WebView (2)
      • Error (6)
    • Android Jetpack Compose (33)
      • Compose (6)
      • Compose Modifier (13)
      • Compose Resource (4)
      • Compose State (4)
      • Compose Side Effect (6)
    • Android Jetpack Compose UI (48)
      • Compose Layout (14)
      • Compose Text (10)
      • Compose Button (5)
      • Compose Dialog (2)
      • Compose TextField (0)
      • Compose UIs (4)
      • Compose Animation (1)
      • Compose Canvas (12)
    • Android Jetpack (10)
      • Datastore (5)
      • ViewModel (4)
      • LiveData (1)
      • Paging (0)
    • KMP (5)
    • Programming (4)
    • Machine (9)
      • JVM (7)
      • Linux (2)
    • CI, CD (74)
      • Gradle (12)
      • Groovy Gradle (5)
      • Git (25)
      • Git Remote (5)
      • GitHub (5)
      • GitHub Actions (21)
    • Network (33)
      • GraphQL (12)
      • HTTP (11)
      • Basic (9)
    • 오픈소스 (3)
    • Database (3)
      • MongoDB (3)
    • IDE (6)
      • Android Studio (2)
      • Intellij (4)
    • Firebase (1)
    • Javascript (9)

공지사항

  • 코틀린 코루틴 완전 정복 강의 in 인프런 오픈
  • 코틀린 코루틴의 정석 책 출간
  • Kotlin Coroutines 공식 기술 문서 한국어 번⋯
  • GitHub에서 조세영의 Kotlin World를 Foll⋯
  • 문의&제안

인기 글

태그

  • Unit Testing
  • Kotlin
  • java
  • 의존성 주입
  • 코루틴
  • junit4
  • Jetpack Compose
  • 안드로이드
  • Android
  • GraphQL
  • github actions
  • Coroutine
  • compose
  • 유닛 테스팅
  • Dependency Injection
  • junit5
  • kotlin spring
  • 스프링
  • GIT
  • junit
  • Spring
  • github
  • HTTP
  • Android Compose
  • 코틀린
  • dagger2
  • flow
  • Spring boot
  • gradle
  • Class

최근 글

반응형
hELLO · Designed By 정상우.v4.3.0
Dev.Cho
[GraphQL] 5. 단일 데이터를 가져오는 query와 다중 데이터를 가져오는 query의 제약
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.