티스토리 뷰
REST API와 GraphQL은 클라이언트와 서버 간 데이터를 주고받는 방식이 서로 다른 API 설계 방식입니다.
REST API는 자원 중심의 구조로, URL(엔드포인트)을 통해 각각의 자원에 접근하고 HTTP 메서드(GET, POST, PUT, DELETE 등)를 활용해 CRUD 작업을 수행합니다. 예를 들어 /users, /products처럼 명확한 엔드포인트가 있고, 각 엔드포인트는 고정된 응답 구조를 갖습니다. 이 방식은 구조가 단순하고, HTTP의 캐싱이나 로깅 등 기본 기능을 활용하기에 좋습니다.
반면, GraphQL은 단 하나의 엔드포인트(/graphql)를 사용하며, 클라이언트가 직접 필요한 데이터의 구조를 쿼리 형태로 정의하여 요청할 수 있는 방식입니다. 이로 인해 오버페칭(필요 이상의 데이터를 받는 문제)이나 언더페칭(원하는 정보를 다 받지 못해 여러 번 요청해야 하는 문제)을 해결할 수 있습니다. 또한 여러 관계형 데이터를 한 번에 조회할 수 있어, 복잡한 UI나 모바일 환경에서의 최적화에 유리합니다.
✅ REST API와 GraphQL의 차이점 및 선택 기준
- REST API
- 자원 중심(Resource Oriented)의 API 설계 방식
- URL(엔드포인트)마다 고정된 자원에 접근 (/users, /products 등)
- HTTP 메서드(GET, POST, PUT, DELETE 등)를 활용하여 자원에 대한 행위를 정의
- 구조가 단순하고 익숙하여 학습 곡선이 낮고, HTTP 캐싱이나 로깅 등 기존 인프라 활용에 유리
- GraphQL
- 단일 엔드포인트(/graphql)에서 클라이언트가 필요한 데이터를 쿼리로 정의하여 요청
- 오버페칭(필요 이상의 데이터 수신)과 언더페칭(불충분한 데이터 응답) 문제 해결
- 관계형 데이터 및 중첩 구조 데이터를 한 번에 요청 가능 → 네트워크 성능 최적화에 유리
- 프론트엔드 개발자가 유연하게 필요한 데이터만 선택 가능
✅ 상황에 따른 선택 기준
- REST API가 적합한 경우
- 단순한 CRUD 기능 위주의 서비스 (예: 사용자 등록, 상품 목록 조회 등)
- HTTP 기반의 캐싱, 인증, 모니터링 등을 적극 활용하고자 할 때
- 명확한 자원 중심 URL 설계가 가능할 때
- GraphQL이 적합한 경우
- 다양한 데이터를 조합해 화면을 구성해야 할 때 (특히 모바일이나 대시보드 화면)
- 클라이언트마다 필요한 데이터가 달라, 백엔드에서 모든 경우를 다 처리하기 어려울 때
- 네트워크 요청 횟수를 최소화하거나 데이터 전송량을 줄여야 할 때
'Tech' 카테고리의 다른 글
| 프롬프트 엔지니어링 가이드 (1) | 2025.02.18 |
|---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코드잇스프린트
- 프로젝트
- 풀스택
- 데이터 이상
- 모드잇
- 스프린트풀스텍2기
- 렌더링
- 데이터베이스 정규화
- 배열 키 설정
- React
- lexical
- 스프린트풀스택2기
- semantic tag
- 독스루
- 타입 정의 파일
- seo
- 리액트
- 렉시컬
- virtual dom
- useMemo
- 개발리포트
- typscript
- fitmate
- 타입스크립트 동작원리
- 무결성
- d.ts
- 코드잇스프린트프리코스
- docthru
- usecalback
- 취업까지달린다
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
글 보관함
