REST API란?
- REST = Representational State Transfer
- 2000년 로이 필딩(Roy Fielding)의 박사 논문에서 제안
- HTTP 기반으로 리소스를 표현하고 조작하는 웹 아키텍처 스타일
- 클라이언트(웹앱, 모바일앱)는 REST API로 서버 기능에 접근
REST의 6가지 제약 조건
- 클라이언트-서버 구조 : UI와 데이터 처리 역할 분리
- 무상태성(Stateless) : 서버는 요청 간 클라이언트 상태 저장 X
- 캐시 처리 가능(Cacheable) : 응답 캐시 여부를 명시
- 계층화 시스템 : 중간 계층(ex. 프록시) 허용
- 일관된 인터페이스 : 리소스 접근 방식이 통일되어야 함
- 코드 온 디맨드 (선택) : 서버가 실행 코드 제공 가능 (거의 사용되지 않음)
REST API 구성 요소
1) 리소스(Resource)
- 고유한 URI로 식별되는 데이터 객체
- 예시
- /users : 사용자 목록
- /users/1 : ID=1 사용자
- /posts/33/comments : 33번 게시글의 댓글
2) HTTP 메서드
메서드 |
설명 |
예시 |
GET |
리소스 조회 |
GET /users/1 |
POST |
리소스 생성 |
POST /users |
PUT |
리소스 전체 수정 |
PUT /users/1 |
PATCH |
리소스 일부 수정 |
PATCH /users/1 |
DELETE |
리소스 삭제 |
DELETE /users/1 |
3) 표현(Representation)
- 서버가 응답으로 보내는 리소스의 형태
- 일반적으로 JSON 형식
- 예시
{
"id": 1,
"name": "홍길동",
"email": "hong@example.com"
}
4) 무상태성
- 서버는 클라이언트 상태를 저장하지 않음
- 모든 요청은 독립적으로 처리
5) 클라이언트-서버 구조
- 클라이언트 : UI 렌더링
- 서버 : 데이터 처리 및 응답
RESTful URL 설계 예시
기능 |
URL |
HTTP 메서드 |
사용자 전체 조회 |
/users |
GET |
특정 사용자 조회 |
/users/1 |
GET |
사용자 생성 |
/users |
POST |
사용자 전체 수정 |
/users/1 |
PUT |
사용자 삭제 |
/users/1 |
DELETE |
사용자 게시글 조회 |
/users/1/posts |
GET |
REST API 장단점
장점
- 1) HTTP 기반 → 다양한 도구로 쉽게 테스트 가능
- 2) 프론트/백엔드 분리 → 독립 개발 가능
- 3) 캐시/계층 구조 활용 가능 → 성능 및 확장성 우수
- 4) 직관적인 URI → 이해하기 쉬움
단점
- 1) 복잡한 쿼리 표현 어려움 → GraphQL 등장 배경
- 2) 오버페칭/언더페칭 발생 → 필요한 데이터만 받기 어려움
- 3) 철학이 무시되는 경우 많음 → 이름만 REST인 API 존재
REST와 비교되는 기술
- GraphQL : 필요한 데이터만 요청하는 쿼리 기반 API
- gRPC : Protocol Buffers 기반 고속 RPC
- SOAP : XML 기반 레거시 웹서비스
REST vs GraphQL vs gRPC
항목 |
REST API |
GraphQL |
gRPC |
데이터 형식 |
JSON |
JSON |
Protocol Buffers |
요청 구조 |
URL + 메서드 |
1개 엔드포인트 + 쿼리 |
정의된 함수 호출 (RPC) |
장점 |
직관적, HTTP 친화적 |
오버페칭 방지, 유연함 |
고성능, 실시간 양방향 |
단점 |
오버페칭/언더페칭 |
스키마 복잡 |
디버깅 어려움, 브라우저 미지원 |
REST API 실무 사용 예
- 프론트엔드 : Axios, Fetch 등으로 호출
- 백엔드 : FastAPI, Express.js, Spring, Django 등 사용
# FastAPI 예시
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"id": user_id, "name": "홍길동"}
REST는 어떤 기술 범주인가?
- 1) 아키텍처 스타일 : 클라이언트-서버 통신 설계 방식
- 2) 웹 서비스 기술 : SOAP, GraphQL과 함께 주요 API 기술
- 3) HTTP 기반 통신 프로토콜 활용 기술
요약
- REST : HTTP 기반 웹 아키텍처 설계 원칙
- REST API : HTTP 메서드 + URI 중심 API 설계 방식
- 특징 : 무상태성, 리소스 중심, 명확한 구조, 단순한 인터페이스
- 적용 분야 : 클라이언트-서버 통신, 모바일/웹 앱, 마이크로서비스 등