요약 정리
- REST API의 한계
- Client 가 어떤 Data가 필요한지 API 설계를 잘해야 한다(Client 와 Back-End Server 개발자의 지속적인 대화 필요).
- API 문서를 지속적으로 관리해야 한다(Update 될 때마다 관리 필수).
- REST API는 동적으로 대응하기 힘들기 때문에 비슷한 Endpoint가 개발된다.
- GraphQL
- A Query Language for API
- Client 가 원하는 값만 가져올 수 있다(응답은 JSON).
- 단일 Endpoint를 사용할 수 있어 네트워크 요청을 최소화한다(주로 POST 를 많이 사용).
- 스펙내에서 규제 규약 없음
- Query
- REST GET method 구현(Data 가져오기)
- Mutation
- REST POST/PUT/PATCH/DELETE Method 구현(Data 변경하기)
- Type System
- Schema 정의
- 타입이 정해져 있고 프로토콜에서 확인 가능
- 동적이 타입 정의는 어렵고, 계속 수정 필요
- 최적화
- 로딩이 길거나, 캐싱이 안되는 경우
- Data Loader 사용
- 특정 리소스 Limitation 관리(Depth 조정)
- Relay
- GraphQL과 React로 애플리케이션을 개발하기 위한 데이터 관리 프레임워크
- 각 컴포넌트마다 필요한 데이터를 선언하고, 컴포넌트의 계층 구조를 따라서 필요한 데이터를 상위 컴포넌트로 전달 및 조합하여 단일 GraphQL Query로 만들어 준다.
- Serverless
- Server 가 없는 건 아니고 클라우드에 Server 관리를 맡기자.
- Server들을 Function으로 연결하자(AWS 처럼).