본문 바로가기

개발에 도움이 되는/GraphQL

GraphQL + Apollo

- GraphQL

페이스북(현 메타)에서 만든 API를 위한 쿼리 언어이며, 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것이 목적

REST API와 비교

1. GraphQL의 구조

- Query : 데이터 요청, CRUD에서 R을 의미

 ex)

// 요청 (일반 query)
{
  tracksForHome {
    id
    title
  }
}

// 요청 (operation name query) : 변수 사용 시
query Query {
  tracksForHome {
    id
    title
  }
}

// 응답 (둘 다 응답은 같음)
{
  "data": {
    "hero": {
      "name": "R2-D2"
    }
  }
}

 

- Mutation : 데이터 변경 요청, CRUD에서 R 제외한 나머지

Mutation은 반드시 Schema에 정의해야 하며, Resolver를 통해 결과를 반환한다.

 ex) 추후 추가 예정

 

- Schema : 사용할 Query, Mutation, Type 등을 정의 

  ex)

type Movie {
  id: Int!
  title: String!
  rating: Float
  description_intro: String
  language: String
  medium_cover_image: String
  genres: [String]
}

type Query {
  movies(limit: Int, rating: Float): [Movie]!
  movie(id: Int!): Movie
  suggestions(id: Int!): [Movie]!
}
  
type Mutation {
    ...
}

사용할 Query나 Mutation은 반드시 type Query, type Mutation 내부에 작성해야 한다.

! 은 NonNullable이며 아래 사진을 참고

 

 - Resolver : Redux에서의 Reducer와 비슷하며, 쉽게 말해 Query를 어떻게 처리할 것인지를 뜻함

 ex) 추후 추가 예정

 

 

- Apollo

GraphQL을 쉽게 다룰 수 있게 해주는 라이브러리이며, client와 server 모두 사용 가능

 

(게시물 수정 예정)

반응형

'개발에 도움이 되는 > GraphQL' 카테고리의 다른 글

useQuery 기초  (0) 2022.05.11