Server API
REST API 와 GraphQL의 개념을 이해하려면 먼저 Server API가 무엇인지 먼저 이해할 필요가 있다.
Server API는 Server-side wev API 의 줄임말로 어떠한 요청을 하였을 때 그에 맞게 응답을 주는것을 말한다.
그 종류로는 크게 REST 와 GraphQL 이 있다.
REST API
REST는 REpresentational State Transfer 의 줄임말로 어떤 자원의 상태를 전달하는것 으로 정의할 수 있다.
쉽게 말하면 HTTP 메소드를 통해 CRUD(Create ,Read,Update,Delete)를 실행하는 API를 의미한다.
예시) 만약 글 관련 API를 설계한다고 했을 때 엔드포인트는
- 글 관련: API /posts
- 글 작성 : API/POST/posts
- 글 수정: PATCH/posts/[postid]
- 글 삭제: DELETE/posts/[postid]
이렇게 REST의 조건을 만족하고 엔드포인트를 동일하게 사용해주고 HTTP 메소드들을 상황에 맞게 작성 해주는 것을 RESTful 한 API라고 말한다.
장점
- 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대로 활용 할 수 있다.
- HTTP 프로토콜을 사용 할 수 있는 모든 플랫폼에서 호환된다. 즉 범용성이 좋다는 이야기이다.
- 서버와 클라이언트의 역할을 명확하게 구분하고 분리 한다.
단점
- 사용할 수 있는 HTTP 메소드가 4가지 밖에 없다
- 표준이 존재 하지않음
GraphQL
GraphQL은 페이스북에서 만든 Graph Quert Language 의 줄임말로 Server API 를 통해 정보를 주고 받기 위해 사용하는 쿼리언어라고 정의할 수 있다. 왜 REST를 잘 사용하고 있는데 GraphQL을 만들었을까? 하는 GraphQL의 탄생 배경은 페이스북에서 다음과 같이 설명하였다.
- RESTful API 로는 iOS와 Android 와 같은 다양한 기종에서 필요한 정보들을 일일이 구현하는 것이 힘들었다.
- iOS와 Android 에서 필요한 정보들이 조금씩 달랐고 그 다른 부분마다 API를 작성하는것은 매우 비효율적이다.
이러한 이유 때문에 정보를 사용하는 측에서 원하는 대로 그 정보를 가져올 수 있고 보다 편하게 유지 보수 할 수 있도록 쿼리 언어를 만들게 되었고 그것이 GraphQL이다.
보통 조회하는 Query 문과 등록 및 수정,삭제 하는 Mutation 문으로 나눠진다.
장점
- HTTP 요청의 횟수를 줄일 수 있다.
- REST는 각 리소스 종류 별로 요청을 해야하고 따라서 요청 횟수가 필요한 리소스 종류와 비례한다.
- HTTP 응답의 Size를 줄일 수 있다.
- REST는 응답의 형태가 정혀져 있다. 그래서 필요한 정보만 부분적으로 요청하는것이 힘들다.
단점
- File 전송 등 Text 만으로 하기 힘든 내용을 처리하기 복잡하다
- 고정된 요청과 응답만 필요할 경우에는 Query로 인해 요청의 크기가 오히려 REST 보다 커진다.
REST API VS GraphQL
서로 상황에 맞게 유연적으로 사용하면 좋을것 같다. GraphQL은 서로 다른 모양의 다양한 요청들에 대해 응답을 할 수 있거나 대부분의 요청이 CRUD에 해당 할 때 사용하면 좋고 REST는 요청의 구조가 딱 정해져 있고 File 전송 등 단순한 Text로 처리되지 않는 요청들이 있을 때 사용하면 좋을것 같다.
'WEB' 카테고리의 다른 글
[WEB] 웹 크롤링 & 웹 스크래핑 (0) | 2022.08.22 |
---|---|
[WEB] Husky (0) | 2022.08.22 |
[WEB] DTO(Data Transfer Object) (0) | 2022.07.31 |
[WEB] MVC 패턴 (0) | 2022.07.18 |
[WEB] HTTP (0) | 2022.07.05 |