RESTful(Representational State Transfer)은 웹 서비스 디자인을 위한 아키텍처 스타일로, 네트워크 상에서 자원을 정의하고 자원에 대한 상태를 주고받는 방식을 규정합니다. RESTful은 HTTP 프로토콜을 기반으로 하며, 다음과 같은 원칙들을 따릅니다.
REST의 핵심 원칙
- 자원(Resource):
- 모든 자원은 고유한 URI(Uniform Resource Identifier)로 식별됩니다. 예를 들어, https://api.example.com/users/123는 ID가 123인 사용자 자원을 식별합니다.
- 표현(Representation):
- 클라이언트는 자원에 대한 정보를 JSON, XML 등의 형태로 요청하고 받을 수 있습니다. 자원의 상태는 이 표현을 통해 전달됩니다.
- 상태 전달(Stateless):
- 각 요청은 독립적이며, 서버는 클라이언트의 이전 요청을 기억하지 않습니다. 모든 필요한 정보는 요청에 포함되어야 합니다.
- HTTP 메서드:
- 자원에 대한 작업은 HTTP 메서드를 사용하여 표현됩니다. 주요 HTTP 메서드는 다음과 같습니다:
- GET: 자원의 조회.
- POST: 자원의 생성.
- PUT: 자원의 전체 업데이트.
- PATCH: 자원의 부분 업데이트.
- DELETE: 자원의 삭제.
- 자원에 대한 작업은 HTTP 메서드를 사용하여 표현됩니다. 주요 HTTP 메서드는 다음과 같습니다:
- 서버-클라이언트 구조:
- 클라이언트와 서버는 명확하게 구분되어 있으며, 서로 독립적으로 진화할 수 있습니다. 클라이언트는 서버의 자원을 요청하고, 서버는 요청에 대한 응답을 제공합니다.
- 캐시(Cache):
- 서버 응답은 캐시될 수 있어야 하며, 이를 통해 성능을 향상시킬 수 있습니다. 응답에는 캐시 가능한지 여부를 나타내는 헤더가 포함됩니다.
RESTful API 설계 예시
예를 들어, 간단한 블로그 애플리케이션의 RESTful API를 설계할 때는 다음과 같은 엔드포인트를 가질 수 있습니다:
- GET /posts: 모든 블로그 포스트 조회.
- GET /posts/1: ID가 1인 블로그 포스트 조회.
- POST /posts: 새로운 블로그 포스트 생성.
- PUT /posts/1: ID가 1인 블로그 포스트 전체 업데이트.
- PATCH /posts/1: ID가 1인 블로그 포스트 부분 업데이트.
- DELETE /posts/1: ID가 1인 블로그 포스트 삭제.
이러한 설계는 클라이언트가 HTTP 메서드와 URI를 통해 서버 자원에 접근하고, 자원의 상태를 변경하거나 조회할 수 있도록 합니다.
RESTful은 단순하면서도 유연한 아키텍처 스타일로, 웹 서비스 개발에서 널리 사용되고 있습니다. 이를 통해 클라이언트와 서버 간의 상호작용을 표준화하고, 시스템의 확장성과 유지보수성을 높일 수 있습니다.
'backend' 카테고리의 다른 글
2024년도 백엔드 웹,앱 프레임워크 추천! (0) | 2024.07.02 |
---|---|
Express springboot Django nest.js 장단점 (0) | 2024.07.02 |