REpresentational States Transfer Apllication Programming Interface
REST는 프론트엔드가 필요한 정보를 서버에게 요청하는 통신 방식으로 해당 통신을 통해 정해진 구조의 정보를 받을 수 있다. 해당 요청만 보고 각 요청이 어떤 동작이나 정보를 위한 것인지를 명시적으로 알 수 있다는 장점이 있다.
다만 정해진 구조의 정보를 받는다는 것은 불필요한 데이터까지 전달받을 수 있다는 것을 의미하기도 한다. 그렇다고 모든 경우의 수를 생각하여 API를 만드는 것은 사실상 불가능하기 때문에 그 대안으로 나타난 것이 GraphQL이다.
1) Over-fetching
2) Under-fetching
3) 기타
Graph Query Languag로 여기서 Query Language는 데이터베이스 또는 데이터 관리 시스템에 접근하기 위한 언어를 의미한다.
GraphQL은 Server API로 정보를 주고받는 것에 특화된 Query Language로 프론트엔드가 필요한 정보를 원하는 구조대로 받을 수 있도록 정보를 전달하는 역할을 한다.
ios, Android 등 다양한 기기에서 필요한 정보의 형태가 조금씩 달랐는데 기존의 REST API로는 이 것을 일일이 구현하는 것이 힘든 단점이 있었다. 그래서 정보를 요청하는 쪽에선 원하는 형태로 가져오고 수정할 수 있는
Query Language를 만들게 되었다
REST API의 단점인 Over-fetching, Under-fetching
의 이슈가 없으며 사용자가 직접 어떤 데이터가 필요한지 명시할 수 있어 응답받을 데이터 구조를 효율적으로 구성할 수 있다. 또한 단 1개의 URI만 존재
한다.
1) Query: 데이터 조회
2) Mutation: 데이터 수정
3) Subscription: 주로 실시간애플리케이션 구현을 위해 사용
출처 - YOUTUBE 퉁퉁코딩 (https://youtu.be/xiE9-S7s9rs)