서버 API는 적절한 요청을 했을 때 그에 맞는 응답을 돌려주는 창구를 Web을 통해 노출하는 것을 말한다.
REST는 REpresentational State Transfer의 줄임말로 모든 자료들을 하나의 Endpoint에 연결한 후, 각 Endpoint는 그 Resource와 관련된내용만 관리하는 방법이다.
즉, HTTP의 길을 통해 요청응답(CRUD)를 실행하는 API를 말한다.
여기서 Resource는 해당소프트웨어가 관리하는 모든것을 의미한다.
Rest-API의 이름은 홈페이지 주소처럼 생겼다. 또한 rest는 개발자가 만든 함수에서 보내주는 모든 데이터들을 받아야 하기 때문에 클라이언트가 필요하지 않은 자료가 섞여있을 수 있고 이로인해 상대적으로 느릴 수 있다.
위와 같은 문제를 해결하기 위해 페이스북에서 만든 기능이 바로 GraphQL-API이다. REST와는 달리 모든 데이터가 아닌 클라이언트가 필요한 데이터들만 따로 보내주는 기능을 구현한 것이다. 이 때문에 상대적으로 빠르고 정확하게 필요한 정보를 얻을 수 있다.
`GraphQL 과 RESTful 중 어떤 것을 선택해서 사용해야하는가?
다음과 같은 기준으로 선택하면 될 것이다.
GraphQL-API
서로 다른 모양의 다양한 요청들에 대해 응답할 수 있어야 할 때
대부분의 요청이 CRUD(Create-Read-Update-Delete) 에 해당할 때
REST-API
HTTP 와 HTTPs 에 의한 Caching 을 잘 사용하고 싶을 때
File 전송 등 단순한 Text 로 처리되지 않는 요청들이 있을 때
요청의 구조가 정해져 있을 때`