GraphQL (유튜브 요약)

jyleever·2022년 9월 12일
0

graphQL

목록 보기
1/2

본 포스팅은 얄코의 코딩사전 & 노마드 코더 영상 참고
https://youtu.be/EkWI6Ru8lFQ
https://youtu.be/N-81mS2vldI

REST API

  • 가장 유명한 API
  • 여러 개의 URL을 활용, 각 URL은 고유하고 각기 다른 데이터를 제공
  • 여기서 말하는 URL은 특정 웹 사이트로 연결되는 URL이 아니고 JSON 포멧으로 데이터를 요청하는 URL, 즉 해당 데이터를 클라이언트가 제공 받아 사용자에게 보여주는 데 사용되는 URL
  • 요청마다 새로운 URL을 제공

REST API의 단점

  • Over Fetching
    사용자가 요청한 데이터보다 더 많은 데이터를 제공
    -> Query Language인 GraphQL이 이를 해결, 정확히 필요한 정보만 요청할 수 있음
  • Under Fetching
    필요한 것보다 더 적은 데이터를 제공하므로 필요한 데이터를 완전히 얻기 위해서는 각기 다른 URL 요청을 여러 번 보내야 하는 경우 발생, 이는 로딩 타임 증가의 단점
    -> GraphQL은 1개의 쿼리에 여러 정보를 한 번에 요청하면서 이를 해결, 따라서 정확히 원하는 것만 요청할 수 있음
// 요청
{
  upcoming{
    title
  }
  nowPlaying{
    title
    popularity
  }
}
// 응답
{
  "upcoming": [
    {"title": "The Northman"},
    {"title": "Dune"},
    {"title": "Dr.strange"}
  ],
  "nowPlaying": [
    {"title": "The Northman", "popularity":10},
    {"title": "Iron Man", "popularity":8},
  ]
}

GraphQL은 REST API의 이러한 OverFetching, UnderFetching의 단점을 해결!

GraphQL

  • 2012년 페이스북에서 REST API의 문제를 해결하기 위해 만든 Web API 컨셉
  • 2015년 GraphQL의 spec(specification) 오픈소스화
  • GraphQL은 특정 언어에 종속되지 않는 '아이디어'

같은 API서버를 사용하더라도 사용자마다 필요한 정보가 다른데 이런 서비스에서는 GraphQL이 유용할 것

  • 받아야 할 정보가 많고 정해진 경우(요청이 단순하고 데이터는 복잡)에는 REST API가 유용
  • 요청은 복잡하지만 데이터는 효율적으로 받고자 할 때에는 GraphQL가 유용하다.

구현?
백엔드 서버에 REST API와 GraphQL을 한 번에 구현하자
각 정보와 요청마다 유리한 걸로 고르거나 둘 다 만들어서 클라이언트에게 제공하면 된다

각 언어마다 제공하는 GraphQL 라이브러리를 이용해 구현

예시

  1. 메뉴 번호대로 피자빵 하나를 반환하는 명령어를 Schema의 Query에 등록
type Query {
  pizza_buns: [PizzaBun]
  pizza_bun(pb_idx: Int):PizzaBun
}
  1. resolver에서도 PizzaBun index (pb_idx)를 인자로 받아서 해당하는 피자빵을 반환하는 쿼리문을 짠다

  2. 그 결과를 반환

0개의 댓글