REST API의 문제점
GraphQL은 REST API 방식의 문제점을 보완하기 위해 등장하였다. REST API 방식의 문제점은 아래와 같다.
- API와 관련된 수많은 엔드포인트가 필요하다.
- 상품 관련 API의 경우
- POST 방식의 /products
- GET 방식의 /products
- PATCH 방식의 /products:id
- DELETE 방식의 /products:id
- 한번 요청할 때마다 하나의 API만 요청할 수 있다. (
underFetching 문제
)
- 한 페이지에서 여러 API를 요청해야 하는 경우
- 각각의 API를 한번씩 요청해서 응답받아야 한다.
- 백엔드에서 응답하는 결과를 모두 받아야 한다. (
overFetching 문제
)
GraphQL은 REST API이다?
- GraphQL은 REST API를 가공해서 만든 것이다.
- GraphQL의 엔드포인트는
/graphql
이다.
- REST API의 수많은 엔드포인트 문제를 보완한다.
- GraphQL은 항상
POST
방식으로 동작한다.
- GraphQL의 경우 요청 바디에 어떤 API를 요청하는지 작성해야 한다.
- 요청 바디에 요청하고자 하는 여러 API들을 모두 담아 한번에 요청한다.
- REST API의
underFetching 문제
를 보완한다.
- 요청 API에서 원하는 정보만 골라서 받을 수 있다.
- 요청 바디에 원하는 정보만 명시하여, 명시한 정보만 가져올 수 있다.
- REST API의
overFetching 문제
를 보완한다.
주의할 점
- GraphQL은 항상 POST 방식이다.
- 요청 시 요청 바디에 여러 API를 담을 수 있어서, 어떤 API 요청이 성공하고 실패하는지 파악하기 어려워 전체 요청에 대한 상태 코드는 항상 200이다.
- 에러가 발생하면 각각의 API에 대한 에러 메세지는 나타나지만 상태 코드는 200으로 응답된다.