네트워크 | REST API

Faithful Dev·2025년 1월 30일

컴퓨터 공학

목록 보기
77/81

REST (REpresentational State Transfer)

REST는 웹 기반 시스템에서 리소스를 효율적으로 관리하고 접근하기 위한 아키텍처 스타일이다.

REST의 핵심 개념

  • 리소스(Resource) → URI(Uniform Resource Identifier)로 식별
  • 표현(Representation) → JSON, XML 등으로 리소스를 표현
  • 상태(State) 전이(Transfer) → 클라이언트가 요청을 보내고, 서버가 응답을 반환

즉, REST는 "웹의 리소스를 URL을 통해 식별하고, HTTP를 사용하여 상태를 전송하는 방식"


REST의 6가지 원칙 (제한 조건)

원칙설명
클라이언트-서버 구조클라이언트와 서버를 분리하여 독립적 확장 가능
무상태성 (Stateless)서버는 클라이언트의 상태를 저장하지 않음(각 요청이 독립적)
캐시 가능 (Cacheable)응답 데이터를 캐시할 수 있도록 설계 가능
계층화 시스템 (Layered System)클라이언트-서버 사이에 프록시, 로드 밸런서 등을 둘 수 있음
일관된 인터페이스 (Uniform Interface)URI, HTTP 메서드, 응답 형식(JSON/XML) 등 표준화
코드 온 디맨드 (선택 사항)서버가 클라이언트에 실행 가능한 코드를 제공할 수 있음 (예: JavaScript)

이 원칙들을 따르면 RESTful한 시스템이 됨


REST API

REST API는 REST 원칙을 따르는 API(애플리케이션 프로그래밍 인터페이스)이다.

즉, RESTful한 방식으로 클라이언트와 서버가 데이터를 주고받는 API


REST API의 특징

특징설명
클라이언트-서버 구조프론트엔드(클라이언트)와 백엔드(서버)를 분리
무상태(Stateless)요청 간의 상태 정보 저장 X (필요하면 토큰 사용)
리소스 기반URL을 사용해 리소스 식별 (명확한 엔드포인트)
표준 HTTP 메서드 사용GET, POST, PUT, DELETE 활용
JSON 형식 응답일반적으로 JSON 데이터 포맷 사용

REST API는 URI + HTTP 메서드 + JSON 응답 구조를 가짐


REST API 설계 원칙

URI 설계 (리소스 중심)

잘못된 예시

GET /getUser?id=123
POST /createUser

좋은 예시 (명사 사용 & 계층 구조 유지)

GET /users/123
POST /users
PUT /users/123
DELETE /users/123
  • 리소스 명은 복수형으로 작성 (/users vs /user)
  • HTTP 메서드를 활용하여 동작을 나타냄 (GET, POST, PUT, DELETE)
  • 하위 리소스 관계 표현 가능 (/user/123/posts)

RESTful API의 HTTP 메서드

HTTP 메서드목적
GET리소스 조회
POST새 리소스 생성
PUT기존 리소스 전체 수정
PATCH기존 리소스 일부 수정
DELETE리소스 삭제

RESTful API는 HTTP 메서드를 활용하여 CRUD(Create, Read, Update, Delete)를 구현.


REST API 응답 구조

REST API는 일반적으로 JSON 형식으로 데이터를 응답한다.

성공 응답 예제

사용자 정보 조회 (GET /users/123)

{
  "id": 123,
  "name": "Alice",
  "email": "alice@example.com"
}

사용자 생성 (POST /users)

{
  "message": "User created successfully",
  "user": {
    "id": 124,
    "name": "Bob",
    "email": "bob@example.com"
  }
}

오류 응답 예제

잘못된 요청 (400 Bad Request)

{
  "error": "Invalid email format"
}

인증 실패 (401 Unauthorised)

{
  "error": "Authentication required"
}

리소스 없음 (404 Not Found)

{
  "error": "User not found"
}

REST API는 적절한 HTTP 상태 코드와 JSON 메시지를 포함하여 응답을 구성


REST API의 장점과 단점

장점

장점설명
확장성클라이언트-서버 분리로 독립적인 확장 가능
표준화HTTP 메서드 및 URI 구조 활용
언어 독립적JSON 기반 응답으로 다양한 클라이언트 지원
캐싱 가능GET 요청 응답을 캐시하여 성능 최적화

단점

단점설명
과도한 요청 (Over-fetching)필요 이상의 데이터가 전송될 수 있음
데이터 조합 어려움 (Under-fetching)여러 API 호출이 필요할 수 있음
실시간 처리 부족WebSocket 같은 실시간 통신 방식 부족

GraphQL, gRPC 같은 대안 기술이 등장했지만, REST API는 여전히 널리 사용됨


정리

  • REST → 리소스를 URI로 식별하고, HTTP를 활용한 아키텍처 스타일
  • REST API → REST 원칙을 따르는 API (JSON 기반, HTTP 메서드 활용)
  • 응답 형식 → JSON 기반, 적절한 HTTP 상태 코드 반환
  • 장점 → 표준화, 확장성, 언어 독립성 (하지만 과도한 요청 문제 존재)

REST API는 웹과 모바일에서 가장 널리 사용되는 API 방식

profile
Turning Vision into Reality.

0개의 댓글