[Network] REST API, GraphQL 차이
http 통신이란 하이퍼텍스트 형태의 데이터를 통신하게 해주는 프로토콜이다. 통신이란 Front(Client)에서 요청(Requer,REQ)을 보내고 BACK(Server)에서 응답(Response,RES)를 하는 것을 말하며, http 통신은 하이퍼텍스트를 주고 받는 것을 의미한다. 백엔드에서는 API, 즉 함수를 여러개 만드는 작업을 하는데 이 API를 통해 클라이언트와 서버가 데이터를 주고 받을 수 있다.
백엔드에서 만들어둔 함수 즉 API의 규격에 맞게 클라이언트 측에서 요청을 보내면 백엔드에서 응답값을 돌려주고 엑셀형태의 DB(data-base)를 안의 해당 데이터를 갱신/수정/조회/삭제(CRUD)를 한다. 통신이 되었을때 응답값에 상태코드가 표시가 되는데, 이를 통해 통신이 원활하게 이루어 졌는지 확인할 수 있다. http 상태코드는 인터넷에 검색을 하면 도표로 쉽게 볼 수 있게 정리되어 있으므로 한번 검색해보길 바란다. 만약 에러가 날 경우, 400번대 에러는 Client측 에러이고 500번대는 Server쪽의 에러라는 것 또한 알 수 있다.
JSON(JavaScript Object Notation)
Client에서 요청을 할때 혹은 Server에서 응답을 보낼때 데이터를 하나씩 보내기 보다는 객체형태로 보내는 것이 보기에도 좋고 관리에도 쉽기 때문에 객체형태로 묶어서 보낸다
<예시 - 김철수에 관한 데이터>
이름 : 김철수, 나이: 10세, 성별: 남, 휴대폰번호: 010-xxx-xxxx
위와 같이 김철수라는 데이터를 주고 받을때 하나의 데이터를 객체에 담아 김철수에 대한 정보를 주고 받는 것이 용이할 것이다. 하지만 http의 경우 하이퍼텍스트를 주고 받는 통신규약이므로 객체 형태를 전달하거나 전달받을 수가 없다. 그래서 나온 것이 JSON 이다. 쉽게 말해, 객체형태의 데이터를 “” 를 붙임으로서 TEXT처럼 만들어 통신을 주고 받을 수 있도록 해주는 데이터 포맷이다.
REST API vs GRAPHQL API
http 통신을 하는 방법으로는 REST API 와 GRAPHQL API이 있다. 기존에 넓게 사용되고 있는 것이 REST API이지만 페이스북에서 REST API 의 문제점을 보완하기 위해 GRAPHQL API을 만들었다. 현재 에어비앤비나 깃허브, 페이스북 등 글로벌 기업에서 GRAPHQL API을 사용하고 있다.
REST API의 단점과 GraphQL API 등장
REST API의 단점은 바로 데이터가 무겁다는 것이다. 데이터가 무겁다는 건 결국 그만큼 렌더링이 느려지고 비효율적이라는 뜻이다. 예를 들어 페이스북은 사용자가 수많은 클릭을 통해 시시각각 그에 맞는 데이터를 받아와 화면에 그려줘야 한다. 하지만 REST API의 경우 하나의 데이터만을 받아오도록 특정할 수 없기에, 만약 사용자가 상세페지이만을 보고싶다 하더라도 조회 API에 요청을 보내면, 상세 페이지 뿐 아니라 해당되는 전체 데이터를 응답받아야 했다. 이에 페이스북에서는 해당 데이터만을 특정할 수 있는 GRAPHQL API 를 만들었고 현재 글로벌 기업인 페이스북, 에어비앤비, 깃허브 등에서 사용 중이다.
REST API의 단점과 GraphQL API 차이점
REST API
axios
를 설치하여 사용 가능하다
method
sms POST(등록) PUT(수정) DELETE(삭제) GET(조회)
GraphQL API
appolo
를 설치하여 사용 가능하다.
MUTATION
(REST API의 POST, PUT, DELET)와 QUERY(조회)로 되어있다.
다만, 현재까지 우리나라 기업이나 OPEN API의 경우 REST API를 널리 사용하고 있고, 이로 인한 큰 문제점이나 불편함은 없기 때문에 두가지 모두 알아 둘 필요가 있다.