REST와 GraphQL은 인터넷을 통한 데이터 교환을 위한 API를 설계하는 두 가지 접근 방식이다.
REST를 사용하면 클라이언트 애플리케이션이 HTTP METHOD(GET, PUT, UPDATE, DELETE ..)를 사용하여 서버와 데이터를 교환할 수 있으며, 이는 인터넷의 표준 통신 프로토콜이다. 반면 GraphQL은 클라이언트 애플리케이션이 원격 서버로부터 데이터를 요청하는 방법에 대한 사양을 정의하는 API 쿼리 언어이다.
REST와 GraphQL의 공통점
- 기반 통신 프로토콜이 HTTP 이다.
- 둘 다 유사한 데이터 형식을 지원하면 대부분 JSON이 사용된다.
- 모두 캐싱을 지원한다.
REST와 GraphQL의 차이점
- REST 요청 작동에 사용되는 요소는 다음과 같다.
- HTTP METHOD
- HTTP METHOD를 작동시킬 리소스를 식별하는 URL
- GraphQL 요청 작동에 사용되는 요소는 다음과 같다.
- 읽기 전용 데이터를 가져오기 위한 쿼리
- 데이터 수정을 위한 변형
- 내부적으로 GraphQL은 모든 클라이언트 요청을 POST HTTP 요청으로 전송한다.
- REST는 URL과 METHOD의 조합으로 다양한 Endpoint를 가진다.
- GraphQL은 단 하나의 Endpoint 만으로 데이터를 요청하고 응답받을 수 있다.
GraphQL의 장점
REST의 단점인 Over-Fetching과 Under-Fetching 문제를 해결할 수 있다.
- Over-Fetching
- 오버 패칭은 클라이언트에서 데이터를 요청했을 때, 실제로 사용되는 데이터 외에 사용되지 않는 데이터들도 함께 불러옴으로 써 리소스의 낭비가 발생하는것을 말한다.
- Under-Fetching
- 언더 패칭은 클라이언트에서 화면을 구성하기 위해 데이터를 요청할 때, 하나의 API에서 필요한 데이터를 모두 내려주는 것이 아닐 수 있기 때문에 여러 개의 API에 데이터를 요청해야 하는 것을 말한다.
GraphQL의 Query와 Mutation
RESTful API를 구현할 때 사용하는 HTTP method인 GET, PUT, PATCH, DELETE, POST와 같은 메서드들과 마찬가지로 GraphQL 에는 Query와 Mutation이 있다. Query는 CRUD 중 R(READ)를 담당하고, Mutation은 C(CREATE), U(UPDATE), D(DELETE) 를 담당한다.
GraphQL이 Query로 동작한다고 하더라도, HTTP Method는 기본적으로 POST라는 점을 잊으면 안된다.
물론 GET으로 가게끔 할 순 있지만 권장하지 않는다. 이유는 GET으로 하게될 경우 Request Body가 아닌 쿼리 파라미터로 받게 되는데 GraphQL query 문을 쿼리로 받게 되면 너무 길어져 HTTP 상태코드 414(URI Too Long)가 내려올 수 있기 때문이다. 그렇기에 웬만하면 POST만을 사용하기를 권장한다.
포스트맨에서 이런식으로 요청하면 되고
body에서 QUERY를 지정하여 요청을 보내면 된다.
'IT 공부' 카테고리의 다른 글
HTTP의 특성 (0) | 2024.01.08 |
---|---|
회원가입, 로그인, 로그아웃, 개인정보 수정 (0) | 2024.01.08 |
간단 보안! (feat. HTTPS 와 SSL/TLS 그리고 CSRF와 XSS) (1) | 2024.01.08 |
회원 데이터베이스를 어떻게 짜볼까? (1) | 2024.01.08 |
인증(Authentication)과 인가(Authorization) (0) | 2024.01.07 |