오늘은 기술면접당시 제대로 대답을 하지 못했던 개념을 다시 정리해보려고한다.
REpresentational State Transfer의 약자로 전반적인 웹 어플리케이션에서 상호작용하는데 사용되는 웹 아키텍쳐 모델이다. 즉, 자원을 주고받는 웹 상에서의 통신 체계에 있어서 범용적인 스타일을 규정한 아키텍쳐 라고 할 수 있다.
Application Programming Interface의 약자로 구글 맵 API, 카카오 비전 API 등 기존에 있는 응용 프로그램을 통해서 데이터를 제공받거나 기능을 사용하고자 할 때 사용하는 인터페이스 및 규격 을 말한다. API는 프로그래밍 언어, 운영체제 등에서도 사용되는 범용적인 용어이다.
따라서, REST API라는 것은 REST 원칙을 적용하여 서비스 API를 설계한 것을 말하며 대부분의 서비스가 REST API를 제공한다
GraphQL은 Graph Query Language 의 줄임말로 정보를 얻기 위해 보내는 질의문(Query)을 만들기 위해 사용되는 Computer 언어의 일종이다.
GraphQL 은 이런 Query Language 중에서도 Server API 를 통해 정보를 주고받기 위해 사용하는 Query Language 이다.
Facebook 의 GraphQL blog 에서는 다음과 같이 이유를 밝히고 있다.
RESTful API 로는 다양한 기종에서 필요한 정보들을 일일히 구현하는 것이 힘들었다. 다시말해 서버를 제공하면서 제공해야할 기능이 늘어나면서 관리해야 할 EndPoint의 증가로 인하여 문제점들이 발생하였다.
- 특정 기능을 위해
여러번
API가 호출 됨- 특정 요청에 fit한 응답을 돌려주기 위해서는 API를
새로
만들어야함- API
유지보수
의 어려움
이 때문에 정보를 사용하는 측에서 원하는 대로 정보를 가져올 수 있고,
보다 편하게 정보를 수정할 수 있도록 하는 표준화된 Query language 를 만들게 되었는데 이것이 GraphQL 이다