2025-08-11 22:09

Tags: 소프트웨어 공학

REST

  • REST 이전 웹 애플리케이션 간에는 SOAP 같은 복잡한 프로토콜 의존
  • 프로토콜이나 표준이 아니라 아키텍쳐를 설계하는 ‘스타일’ 또는 ‘원칙’

REST 핵심 구조

  1. 클라이언트-서버 (Client-Server): 사용자 인터페이스 담당하는 클라이언트와 데이터 관리하는 서버 명확히 분리
  2. 무상태 (Stateless): 서버는 클라이언트 상태 저장X. 각 요청은 독립적 처리. 필요한 모든 정보는 요청 자체에 포함
  3. 캐시 가능 (Cacheable): 클라이언트는 서버의 응답을 캐시 가능. 서버는 캐시 가능 여부 명시
  4. 계층화 시스템 (Layered System 레이어): 클라이언트는 어떻게 연결되는지 알 필요 없음. 각 계층은 독립적 기능 수행
  5. 균일한 인터페이스 (Uniform Interface): 아키텍쳐 얽매이지 않고, HTTP 표준만 따르면 어디서나 통신 가능
  6. 주문형 코드 (Code on Demand - Optional): 서버가 클라이언트에게 실행 가능한 코드 전송 클라이언트의 기능 일시적 확장 허용, 단 필수적인 원칙은 아님
HTTP 메서드역할 (CRUD)설명
GETRead (조회)특정 자원의 정보를 요청합니다.
POSTCreate (생성)새로운 자원을 생성합니다.
PUTUpdate (전체 수정)특정 자원의 전체 정보를 교체합니다.
PATCHUpdate (부분 수정)특정 자원의 일부 정보만 수정합니다.
DELETEDelete (삭제)특정 자원을 삭제합니다.
좋은 URI 설계 예시:
  • GET /users/1: 1번 사용자의 정보를 조회합니다.
  • POST /users: 새로운 사용자를 생성합니다.
  • PUT /users/1: 1번 사용자의 정보를 수정합니다.
  • DELETE /users/1: 1번 사용자를 삭제합니다.

HTTP 상태 코드

  • 2xx (성공): 요청이 성공적으로 처리되었음을 의미합니다.
    • 200 OK: 요청 성공. (GET, PUT, PATCH 등 일반적인 성공)
    • 201 Created: 리소스 생성 성공. (POST 요청 이후)
    • 204 No Content: 요청은 성공했지만, 응답 본문에 보낼 데이터가 없음. (DELETE 요청 이후)
  • 4xx (클라이언트 오류): 요청 자체에 문제가 있음을 의미합니다.
    • 400 Bad Request: 문법 오류 등 클라이언트의 잘못된 요청.
    • 401 Unauthorized: 인증되지 않은 사용자의 요청. (로그인 필요)
    • 403 Forbidden: 인증은 되었지만, 해당 리소스에 접근할 권한이 없음. (관리자 권한 필요 등)
    • 404 Not Found: 요청한 API 경로나 리소스가 존재하지 않음.
  • 5xx (서버 오류): 서버 측에서 문제가 발생했음을 의미합니다.
    • 500 Internal Server Error: 예측하지 못한 서버 내부의 오류 발생.
    • 503 Service Unavailable: 서버가 과부하 등으로 현재 요청을 처리할 수 없음.

References

API

REST API, 웹 통신의 혁명 핵심 원리와 사용법 완벽 가이드 Next.js 개발자를 위한 RESTful API 핸드북 API 라우트부터 데이터 페칭까지 개발자를 위한 HTTP와 REST API 핸드북 원리부터 실전 활용까지

https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Status https://www.restapitutorial.com/httpstatuscodes