RESTful API의 본질과 설계 원칙
RESTful API의 핵심은 다음과 같은 6가지 원칙을 따르는 것입니다:
- 클라이언트-서버 구조: 클라이언트와 서버가 독립적으로 동작.
- 무상태성(Stateless): 각 요청은 독립적이며 서버는 클라이언트 상태를 저장하지 않음.
- 캐시 가능(Cacheable): 응답 데이터가 캐싱 가능.
- 계층화(Layered System): 클라이언트-서버 간 중간 계층 존재 가능.
- 통합된 인터페이스(Uniform Interface): 일관된 URI와 메서드 사용.
- 코드 온 디맨드(Optional): 서버에서 클라이언트로 실행 가능한 코드를 보낼 수 있음.
- RESTful API는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스를 관리하는 스타일을 따릅니다.
- CRUD 중심 설계는 데이터(리소스)의 생성(Create), 조회(Read), 갱신(Update), 삭제(Delete) 작업을 API로 제공하는 설계 방식입니다.
- 따라서, CRUD 설계는 RESTful API의 한 형태일 뿐이며, RESTful API는 더 넓은 범위를 포괄합니다.
여태까지 RESTful API 가 CRUD 중심의 API 설계라고 생각하고 있었는데 아니었다...!
DDD와 이벤트 기반 설계도 RESTful한가?
DDD 중심 설계와 이벤트 기반 설계도 RESTful API의 기본 원칙을 지킬 수 있습니다:
- 리소스 중심: 비즈니스 도메인 모델(포인트, 결제, 사용자 등)을 리소스로 정의.
- HTTP 메서드: 리소스의 상태를 변경하거나 조회할 때 HTTP 메서드를 올바르게 사용.
- 표현성: 리소스의 상태를 API 응답으로 표현.
예를 들어, 다음 API는 RESTful하면서도 CRUD 중심이 아닙니다:
- POST /points/earn: 포인트 적립(도메인 중심 설계).
- POST /events/payment-completed: 결제 완료 이벤트 처리(이벤트 기반 설계)
'[내일배움캠프] AI 를 활용한 백엔드 아카데미 심화 과정 > TIL' 카테고리의 다른 글
DTO 의 분리 (0) | 2024.12.27 |
---|---|
http와 https (1) | 2024.12.23 |
[Github] 템플릿 설정하기 (0) | 2024.12.06 |
REST API, Spring Security, JPA 연관관계와 영속성 컨텍스트 정리 (2) | 2024.12.06 |
[트러블슈팅] Docker Kafka (0) | 2024.12.06 |