# GraphQL 과 REST

til 작성 페이지 개발을 앞두고 기술 스택을 먼저 조사하던 중 graphql과 rest에 대해 알아보았다.

# GraphQL은 Q.L

Query Language

  • Client가 Server로 부터 데이터를 효율적으로 가져오기 위하여 쿼리를 작성하고 호출
  • 단 하나의 EndPoint 에서 요청을 처리
  • HTTP 요청의 횟수를 줄일 수 있는 이점 존재
  • 원하는 정보만 가져오는 것이 가능하여 Response Data를 줄이는 것도 가능

Query, Mutation

  • R : Query
  • CUD : Mutation

단점

  • 파일 전송등 Text만으로 처리가 힘들때 복잡해진다.
  • 쿼리 구조라는게 있으므로 고정된 요청과 응답에 대해서는 REST API에 비해 요청의 크기가 커진다.
  • 재귀적인 Query가 불가능

# REST API

리소스를 URI로 표현

  • GET, POST, PUT, DELETE 활용
    • GET /api/users/ : 유저 리스트 가져오기
    • GET /api/users/1/ : 유저 1을 가져오기
    • POST /api/users/ : 유저 생성하기
    • PUT /api/users/1/ : 유저 1을 생성
    • DELETE /api/users/1/ : 유저 1을 삭제

한계점

  • 응답의 형태가 정해져있어 유연함이 부족
  • 각 리소스 종류별로 요청을 하게 되어 요청 횟수 증가

# 그래서 뭘 쓰지?

GraphQL

  • 서로다른 모양의 다양한 요청에 대해 응답이 필요할 때
  • 대부분의 요청이 CRUD에 해당할 때

RESTful

  • HTTP 와 HTTPS에 의한 Caching을 잘 사용하고 싶을 때
  • File 전송등 CRUD를 벗어나는 요청들이 있을 때
  • 요청이 정해진 구조인 경우

GraphQL이 Server의 구조를 단순화 시켜줄 수 있는 좋은 QL이라는데 직접 개발하면서 체감을 해보아야 겠다.


참조 포스트