2025-08-11 22:09
Tags: 소프트웨어 공학
REST
- REST 이전 웹 애플리케이션 간에는 SOAP 같은 복잡한 프로토콜 의존
- 프로토콜이나 표준이 아니라 아키텍쳐를 설계하는 ‘스타일’ 또는 ‘원칙’
REST 핵심 구조
- 클라이언트-서버 (Client-Server): 사용자 인터페이스 담당하는 클라이언트와 데이터 관리하는 서버 명확히 분리
- 무상태 (Stateless): 서버는 클라이언트 상태 저장X. 각 요청은 독립적 처리. 필요한 모든 정보는 요청 자체에 포함
- 캐시 가능 (Cacheable): 클라이언트는 서버의 응답을 캐시 가능. 서버는 캐시 가능 여부 명시
- 계층화 시스템 (Layered System 레이어): 클라이언트는 어떻게 연결되는지 알 필요 없음. 각 계층은 독립적 기능 수행
- 균일한 인터페이스 (Uniform Interface): 아키텍쳐 얽매이지 않고, HTTP 표준만 따르면 어디서나 통신 가능
- 주문형 코드 (Code on Demand - Optional): 서버가 클라이언트에게 실행 가능한 코드 전송 → 클라이언트의 기능 일시적 확장 허용, 단 필수적인 원칙은 아님
HTTP 메서드 | 역할 (CRUD) | 설명 |
---|---|---|
GET | Read (조회) | 특정 자원의 정보를 요청합니다. |
POST | Create (생성) | 새로운 자원을 생성합니다. |
PUT | Update (전체 수정) | 특정 자원의 전체 정보를 교체합니다. |
PATCH | Update (부분 수정) | 특정 자원의 일부 정보만 수정합니다. |
DELETE | Delete (삭제) | 특정 자원을 삭제합니다. |
좋은 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
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