요청 한 번으로 많은 리소스를 가져오기 어렵다
REST 리소스는 Consumer, Order 같은 비즈니스 객체 중심입니다. 따라서 REST API 설계 시 어떻게 하면 클라이언트가 요청 한 번으로 연관된 객체를 모두 가져올 수 있을지 고민하게 됩니다. 예를 들어 특정 주문과 주문한 소비자를 REST로 조회하는 클라이언트가 있다고 합시다. 순수 REST API라면 클라이언트는 적어도 2회 요청(주문 1회, 소비자 1회)을 해야 합니다. 시나리오가 복잡해지면 왕복 횟수가 증가하고 지연 시간이 급증해서 곤란해지겠죠.
이 문제를 해결하는 한 가지 방법은 클라이언트가 리소스를 획득할 때 연관된 리소스도 함께 조회하도록 API가 허락하는 것입니다. 예를 들어 GET /orders/order-id-1345?expand=consumer처럼 쿼리 매개변수로 주문과 함께 반환될 연관 리소스를 지정하면 주문, 소비자를 한꺼번에 조회할 수 있습니다. 그러나 시나리오가 복잡해지면 효율이 떨어지고 구현 시간이 많이 소요되는 문제도 있습니다. 이런 까닭에 데이터를 효율적으로 조회할 수 있게 설계된 GraphQL16이나 넷플릭스 팔코(Netflix Falcor)17 등 대체 API 기술이 각광받기 시작했습니다.