상세 컨텐츠

본문 제목

GraphQL의 핵심 개념

Programming/GraphQL

by 쌩우 2019. 9. 27. 18:51

본문

Schema Definition Language

ex) 스키마 내에서 간단한 타입의 정의

// 1. Person
type Person {
    name: String!
    age: Int!
}

// 2. Post 
type Post {
    title: String!
}

관계를 추가하는 경우
=> Person은 다수의 post를 가지고, Post는 각각 Person 하나의 author를 가진다.

// 1. Person
type Person {
    name: String!
    age: Int!
    posts: [Post!]!
}

// 2. Post 
type Post {
    title: String!
    author: Person!
}

Query로 데이터 fetching하기 (GET)

GraphQL의 장점으로, 필요한 부분만 특정지어 불러올 수 있다.

ex) 모든 Person 중 마지막 2명의 name, age 불러오기

  1. 요청

    {
     allPersons(last: 2) {
         name
         age
     }
    }
    
  2. 응답

    {
     "allPersons": [
         {"name": "John", "Age": 20}
         {"name": "Alice", "Age": 20}
     ]
    }
    

ex) 모든 Person의 이름과 각각이 작성한 post의 이름 불러오기

  1. 요청

    {
     allPersons {
         name
             posts {
                 title
             }
     }
    }
    
  2. 응답

    {
     "allPersons": [
         {
             "name": "John",
             "posts": [
                 {"title": "Nice GraphQL"},
                 {"title": "Apollo is a Client for GraphQL"}
             ]            
         },
         {
             "name": "Alice",
             "posts": [
                 {"title": "How to start GraphQL"},
             ]            
         },
         {
             "name": "Sarah",
             "posts": []
         },
     ]
    }
    

Mutations로 데이터 쓰기(PUT, UPDATE, DELETE 등등)

  • creating new data
  • updating data
  • deleting data

ex) Create

1) 요청

mutation {
    createPerson(name: "Sangwoo", age: 29) {
        name
        age
    }
}

2) 응답

"createPerson": {
    "name": "Sangwoo",
    "age": 29,
}

모든 스키마

각 스키마의 형태에 대한 예시이다.
타입의 지정과 스키마 정의를 다음과 같은 예시로 알 수 있다.

스키마의 확장
다음 예시처럼 하면 된다.
정의해놓은 각 스키마에 추가할 method(?)와 해당하는 타입을 작성한다.

'Programming > GraphQL' 카테고리의 다른 글

GraphQL과 YTS API 사용하기 (2)  (0) 2019.10.01
GraphQL과 YTS API 사용하기 (1)  (0) 2019.09.30
GraphQL API 만들어보기 (3)  (0) 2019.09.30
GraphQL API 만들어보기 (2)  (0) 2019.09.30
GraphQL Tutorial  (0) 2019.09.27

관련글 더보기

댓글 영역