Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 1. GraphQL, Apollo - 개념 본문

iOS framework

[iOS - swift] 1. GraphQL, Apollo - 개념

jake-kim 2022. 2. 28. 23:21

1. GraphQL - 개념

2. GraphQL - Apollo 사용 준비

3. GraphQL - Apollo 모델 생성 (generate model)

4. GraphQL - Apollo의 request pipeline, Interceptor, token, header

5. GraphQL - Apollo의 fetch 예제  (Pagination)

GraphQL

  • facebook에서 API를 위해 만든 쿼리 언어
  • Endpoint를 하나로하여 API정의를 단순화
  • RESTful vs GrphQL
  •  
RESTful GraphQL
* Resource마다 Endpoint가 다 다름 * Endpoint는 오직 한 개
* 클라이언트가 필요한 데이터를 각 Resource 종류별로 요청 (요청 횟수가 느는 단점이 존재) * 필요한 데이터를 Query에 넣어서 한 번만 호출하여 원하는 리소스 획득
* Request, Response가 정해져 있음 (HTTP caching 이점) * Request, Response가 정해져 있지 않음

GraphQL의 이점

  • overfetching, underfetching 방지
    • overfetching: REST로 API 요청 시, 현재 필요하지 않은 필드도 같이 내려오는 경우
    • underfetching: REST로 API 요청 시, splash화면에서 config, user 관련 정보를 얻기 위해 여러가지 API를 하나씩 순차적으로 호출하는 경우
  • 하나의 Endpoint만을 사용하여 단순화

GraphQL 사용 방법

  • fields와 arguments로 구성

https://www.apollographql.com/blog/graphql/basics/the-anatomy-of-a-graphql-query/

  • operation과 variable
    • operation type: query(읽기 요청), mutation(수정 요청), subscription(실시간 데이터 조회)
      • query와 mutation은 HTTP 프로토콜 사용
      • subscription은 Web Socket 프로토콜 사용
    • operation name
    • variable definitions

https://www.apollographql.com/blog/graphql/basics/the-anatomy-of-a-graphql-query/

Fragment

  • query의 일부분을 재활용 가능한 단위로 나누어 놓은 것
  • Fragment name은 GraphQL 문서 내에서 고유한 이름

https://www.apollographql.com/blog/graphql/basics/the-anatomy-of-a-graphql-query/

 

* 참고

https://www.apollographql.com/blog/graphql/basics/the-anatomy-of-a-graphql-query/

https://medium.com/free-code-camp/so-whats-this-graphql-thing-i-keep-hearing-about-baf4d36c20cf

https://www.apollographql.com/blog/graphql/basics/graphql-vs-rest/

https://graphql-kr.github.io/learn/thinking-in-graphs/

https://www.the-guild.dev/blog/swift-graphql

Comments