[GraphQL] 3. GraphQL의 query 한 번에 정리하기

2022. 3. 20. 12:38· Network/GraphQL
목차
  1. 준비사항
  2. query : 읽기 전용으로 데이터를 가져오기 위한 메서드 
  3. GraphQL의 Query Name
  4. GraphQL의 Variable
  5. GraphQL의 Field
반응형

준비사항

이번 글에서는 GraphiQL에서 제공하는 시각적 편집기를 사용해 query를 생성한 후 실행한다. 아래 사이트를 참조하길 바란다.

 

SWAPI GraphQL API

 

graphql.org

 

 

query : 읽기 전용으로 데이터를 가져오기 위한 메서드 

query는 읽기 전용으로 데이터를 가져오기 위한 메서드이다. query를 통해 가져오는 데이터는 객체 단위로 가져와지며, query는 이름, 변수, 필드 총 3가지 구성요소로 이루어진다. 

 

이 글에서는 이에 대해 간단히 살펴보기 위해 다음의 쿼리를 살펴본다. 아래 쿼리는 영화 정보(Film Info)를 추출하기 위한 query이다. 아래 query에서는 영화 정보(film)를 가져오는데 제목(title), 감독(director), 프로듀서들(producers)를 가져온다.

query FilmInfo($id : ID) {
  film(filmID: $id) {
    title
    director
    producers
  }
}

 

GraphQL의 Query Name

그림1. query name

 

 먼저 query의 이름(name) 부터 살펴보자. query의 이름은 가져온 데이터에 영향을 미치지 않으며, 이 query가 어떤 query인지 식별하기 위한 용도로만 사용된다. 프로그래밍에서 함수의 이름과 같은 역할을 한다. 쿼리 이름을 잘 작성하는 것은 유지 보수를 위해 매우 중요하다.

 

 

 

GraphQL의 Variable

 

그림2. variable and type

 

 다음은 변수(variable)이다. 변수는 $가 앞에 붙어 선언된 값이며, ':' 을 기준으로 왼쪽에 변수명이 오고 오른쪽에는 변수의 타입이 온다. 이곳에는 우리가 데이터를 가져오기 위해 넣어야 하는 변화하는 값을 넣는다. 예를 들어 ID를 식별자로 하여 영화의 정보를 가져오고 싶은 경우 id라는 변수를 $id로 선언한 후 뒤에 타입인 ID를 붙이면 된다.

 

 

GraphQL의 Field

 

그림3. GraphQL의 필드

 

마지막은 필드(Field)이다. 필드에는 우리가 가져오고자 하는 데이터의 스키마와 정보들이 들어간다. 스키마란 추출해야 할 객체를 뜻한다. 스키마는 여러 스키마와 정보의 집합이며, 정보는 Int, String, Float, Boolean 같은 Primitive Type 또는 이들의 Array가 될 수 있다. 즉, 우리가 java에서 말하는 DTO, POJO 혹은 Kotlin의 data class와 같은 역할을 하는 것이다. 우리는 필드를 정의함으로써 우리가 가져오고자 하는 데이터를 객체 단위로 가져올 수 있도록 한다.

 

 

그림4. GraphQL의 parameter

 

필드에는 인자(parameter)가 들어갈 수 있는데, 인자는 필드에서 특정한 필드값만을 가져오기 위한 식별자이다. 인자값은 직접 작성할 수도 있고, 위 그림3과 같이 우리가 위에서 선언한 변수를 대입시킬 수도 있다. 예를 들어 위에서 선언한 $id 값을 직접 대입시키려는 경우 그림4와 같이 식별자에 들어갈 값에 $id를 넣으면 된다. 그림4에서는 query에서 선언한 id 변수에 1을 대입시켰고, 이 값을 다시 인자에 넘기고 있다.

 

위와 같이 인자에 변수를 대입 시키는 것 말고도 아래와 같이 직접 값을 대입시킬 수도 있다.

 

그림5. GraphQL의 parameter에 값 대입

 

그림5와 같이 인자에 직접 값을 대입 시키면 대신 유연성이 준다는 단점이 있지만, 변하지 않는 값에 대해서는 값을 대입시키는 것이 좋다.

반응형
저작자표시 비영리 변경금지 (새창열림)
  1. 준비사항
  2. query : 읽기 전용으로 데이터를 가져오기 위한 메서드 
  3. GraphQL의 Query Name
  4. GraphQL의 Variable
  5. GraphQL의 Field


 

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

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

open.kakao.com

'Network/GraphQL' 카테고리의 다른 글
  • [GraphQL] 5. 단일 데이터를 가져오는 query와 다중 데이터를 가져오는 query의 제약
  • [GraphQL] 4. GraphQL의 introspective query(내향성 쿼리) 사용해 schema, field 정보 조회하기
  • [GraphQL] 2. GraphQL의 메서드 query, mutation, subscription 에 대해 알아보자
  • [GraphQL] 1. GraphQL 이란 무엇인가?
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⋯
  • 문의&제안

인기 글

태그

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

최근 글

반응형
hELLO · Designed By 정상우.v4.3.0
Dev.Cho
[GraphQL] 3. GraphQL의 query 한 번에 정리하기
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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