web

WEB - REST API

제이훈 : 세상 모든 지식의 탐구자 2025. 8. 1. 17:09

REST API란?

  • REST = Representational State Transfer
  • 2000년 로이 필딩(Roy Fielding)의 박사 논문에서 제안
  • HTTP 기반으로 리소스를 표현하고 조작하는 웹 아키텍처 스타일
  • 클라이언트(웹앱, 모바일앱)는 REST API로 서버 기능에 접근

REST의 6가지 제약 조건

  1. 클라이언트-서버 구조 : UI와 데이터 처리 역할 분리
  2. 무상태성(Stateless) : 서버는 요청 간 클라이언트 상태 저장 X
  3. 캐시 처리 가능(Cacheable) : 응답 캐시 여부를 명시
  4. 계층화 시스템 : 중간 계층(ex. 프록시) 허용
  5. 일관된 인터페이스 : 리소스 접근 방식이 통일되어야 함
  6. 코드 온 디맨드 (선택) : 서버가 실행 코드 제공 가능 (거의 사용되지 않음)

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 설계 방식
  • 특징 : 무상태성, 리소스 중심, 명확한 구조, 단순한 인터페이스
  • 적용 분야 : 클라이언트-서버 통신, 모바일/웹 앱, 마이크로서비스 등