REST API와 RESTful API

jadeco·2025년 2월 26일
0

📌 목차

  1. 🔍 REST API 개요
  2. 🏗️ REST 아키텍처의 주요 원칙
  3. 🌐 RESTful API의 특징
  4. ⚡ HTTP 메서드와 CRUD 연산
  5. 🚦 상태 코드
  6. 🏆 REST API 설계 모범 사례
  7. 🛠️ 실습 예제
  8. 🎯 마무리

1️⃣ REST API 개요

🔹 REST란 무엇인가?

  • REST (Representational State Transfer): Roy Fielding이 2000년 논문에서 제안한 아키텍처 스타일
  • 웹 기술과 HTTP 프로토콜을 활용하는 설계 방식
  • 네트워크 기반 소프트웨어 아키텍처의 한 형태

🔹 REST API란?

  • REST 원칙을 따르는 API (Application Programming Interface)
  • 리소스(Resource)를 URI로 표현하고, HTTP 메서드를 통해 조작
  • RESTful API는 웹 서비스 간의 효율적인 통신을 제공

2️⃣ REST 아키텍처의 주요 원칙 🏗️

🔥 6가지 핵심 원칙

1️⃣ 클라이언트-서버 구조 🖥️ ↔️ 📱

  • UI와 데이터 저장을 분리하여 독립적인 확장 가능

2️⃣ 무상태성 (Stateless) ❌💾

  • 서버는 클라이언트의 상태를 저장하지 않으며, 각 요청은 필요한 모든 정보를 포함해야 함

3️⃣ 캐시 가능성 (Cacheable) 💾⚡

  • 성능 최적화를 위해 응답에 캐시 가능 여부를 명시

4️⃣ 계층화 시스템 (Layered System) 🏗️

  • 클라이언트는 중간 계층(프록시, 게이트웨이 등)의 존재를 알 필요 없음

5️⃣ 균일한 인터페이스 (Uniform Interface) 🌎

  • 일관된 인터페이스를 제공해야 함 (예: 명확한 리소스 식별, 자기 서술적 메시지)

6️⃣ 코드 온 디맨드 (Code on Demand) (선택 사항) 💻

  • 클라이언트가 서버에서 코드를 내려받아 실행할 수 있음 (예: JavaScript)

3️⃣ RESTful API의 특징 🌐

✅ RESTful이란?

  • REST 아키텍처 원칙을 따르는 API
  • HTTP 프로토콜을 최대한 활용하는 설계 방식

🏷️ RESTful API의 주요 특징

✔️ 리소스 중심 설계: 모든 것을 리소스로 표현
✔️ URI를 통한 리소스 식별: /users, /orders
✔️ HTTP 메서드 활용: GET, POST, PUT, DELETE
✔️ HATEOAS 지원: 응답에 다음 액션 관련 링크 포함
✔️ 자체 설명적 메시지: JSON, XML 같은 표준 형식 사용
✔️ 무상태 (Stateless) 원칙 준수


4️⃣ HTTP 메서드와 CRUD 연산 ⚡

📌 주요 HTTP 메서드

HTTP 메서드CRUD 연산설명
🔍 GETRead리소스 조회
✏️ POSTCreate리소스 생성
🔄 PUTUpdate/Replace리소스 전체 교체
✂️ PATCHUpdate/Modify리소스 부분 수정
DELETEDelete리소스 삭제
🏷️ HEAD-GET과 유사, 본문 없이 헤더만 반환
🛠️ OPTIONS-지원하는 메서드 조회

⚖️ 메서드 특성

  • 안전성(Safety): 리소스를 변경하지 않는 메서드 (GET, HEAD)
  • 멱등성(Idempotency): 여러 번 호출해도 동일한 결과 (GET, PUT, DELETE)
  • 캐시 가능성(Cacheability): 응답을 캐시할 수 있는 특성 (GET, HEAD)

5️⃣ HTTP 상태 코드 🚦

📌 상태 코드 분류

🟦 1xx (정보) – 요청을 수신했으나 처리 중
🟩 2xx (성공) – 요청 성공
🟨 3xx (리다이렉션) – 추가 작업 필요
🟥 4xx (클라이언트 오류) – 잘못된 요청
🟧 5xx (서버 오류) – 서버 문제 발생

🔥 자주 사용되는 상태 코드

코드의미
200 OK요청 성공
🆕 201 Created리소스 생성 성공
🚫 204 No Content응답 본문 없음
400 Bad Request잘못된 요청
🔑 401 Unauthorized인증 필요
🚷 403 Forbidden권한 없음
🔍 404 Not Found리소스를 찾을 수 없음
🚫 405 Method Not Allowed허용되지 않은 메서드
⚠️ 409 Conflict리소스 충돌
💥 500 Internal Server Error서버 오류

6️⃣ REST API 설계 모범 사례 🏆

🏷️ URI 설계 원칙

✔️ 명사 사용: /users (O), /getUsers (X)
✔️ 계층 구조 표현: /users/123/posts
✔️ 소문자 사용: /users (O), /Users (X)
✔️ 하이픈(-) 사용: /user-profiles (O), /user_profiles (X)
✔️ 마지막 슬래시(/) 없음: /users (O), /users/ (X)
✔️ 행위 포함 금지: /users (GET) (O), /users/get (X)


7️⃣ 실습 예제 🛠️

📌 API 엔드포인트 설계

GET /users               # 사용자 목록 조회
GET /users/{id}          # 특정 사용자 조회
POST /users              # 새 사용자 생성
PUT /users/{id}          # 사용자 정보 수정
DELETE /users/{id}       # 사용자 삭제

📌 API 요청 및 응답 예제

POST /users HTTP/1.1
Host: api.example.com
Content-Type: application/json

{
  "name": "홍길동",
  "email": "hong@example.com",
  "age": 30
}

8️⃣ 마무리 🎯

✅ REST API의 장점

  • 🌍 플랫폼 독립적
  • 🛠️ 확장성 좋음
  • 🚀 HTTP 인프라 활용

⚠️ REST API의 한계

  • ❌ 표준 부재
  • 🚧 복잡한 상호작용 처리 어려움

📌 추가 학습 주제

  • 🔐 API 보안 (OAuth, JWT)
  • 📄 API 문서화 (Swagger, OpenAPI)

profile
당신도요

0개의 댓글