RESTful API의 본질과 설계 원칙

    RESTful API의 핵심은 다음과 같은 6가지 원칙을 따르는 것입니다:

    1. 클라이언트-서버 구조: 클라이언트와 서버가 독립적으로 동작.
    2. 무상태성(Stateless): 각 요청은 독립적이며 서버는 클라이언트 상태를 저장하지 않음.
    3. 캐시 가능(Cacheable): 응답 데이터가 캐싱 가능.
    4. 계층화(Layered System): 클라이언트-서버 간 중간 계층 존재 가능.
    5. 통합된 인터페이스(Uniform Interface): 일관된 URI와 메서드 사용.
    6. 코드 온 디맨드(Optional): 서버에서 클라이언트로 실행 가능한 코드를 보낼 수 있음.
    • RESTful APIHTTP 메서드(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 중심이 아닙니다:

    1. POST /points/earn: 포인트 적립(도메인 중심 설계).
    2. POST /events/payment-completed: 결제 완료 이벤트 처리(이벤트 기반 설계)

    + Recent posts