REST API란
REST(Representational State Transfer)는 리소스 기반 API 설계 원칙입니다. 40년간 API를 설계해온 저로서는 REST가 여전히 가장 널리 사용되는 API 스타일이라고 말씀드립니다. URL이 리소스를, HTTP 메서드가 행위를 나타냅니다. 단순하고 이해하기 쉽습니다. HTTP 캐싱을 자연스럽게 활용합니다.
REST의 한계
오버페칭(Over-fetching): 필요 이상의 데이터를 받습니다. 언더페칭(Under-fetching): 여러 엔드포인트를 호출해야 합니다. 버전 관리가 복잡합니다. 문서화가 수동으로 필요합니다. 클라이언트 요구사항 변화에 백엔드 변경이 필요합니다.
GraphQL이란
GraphQL은 Facebook이 개발한 쿼리 언어입니다. 클라이언트가 필요한 데이터를 정확히 요청합니다. 단일 엔드포인트(/graphql)를 사용합니다. 스키마로 타입 시스템을 정의합니다. 자동으로 문서화됩니다. 프론트엔드 개발자의 자율성이 높아집니다.
GraphQL의 단점
학습 곡선이 있습니다. 복잡한 쿼리로 서버 부하가 증가할 수 있습니다(N+1 문제). HTTP 캐싱이 어렵습니다. 파일 업로드가 복잡합니다. 에러 처리가 다릅니다(항상 200 반환). 작은 프로젝트에서는 오버엔지니어링일 수 있습니다.
선택 기준
단순한 CRUD, 공개 API에는 REST가 적합합니다. 다양한 클라이언트(모바일, 웹), 복잡한 데이터 요구사항에는 GraphQL이 유리합니다. 팀의 경험과 학습 의지를 고려합니다. 둘 다 사용할 수도 있습니다. 어떤 것을 선택하든 일관된 설계가 중요합니다.
댓글
0