[모딥다]44. REST API
2024-06-28
  • HTTP의 장점을 최대한 활용할 수 있는 아키텍처로 소개됨
  • HTTP 프로토콜의 의도대로 디자인하도록 유도해줌
  • REST의 기본 원칙을 지킨 서비스 디자인을 "RESTful"이라 함

REST API의 구성

  • 자원, 행위, 표현으로 구성
  • REST API만으로 HTTP 요청의 내용을 이해할 수 있다.

| 구성요소 | 내용 | 표현방법 | | -------- | ------------------------------ | ---------------- | | 자원 | 자원 | URI(엔드포인트) | | 행위 | 자원에 대한 행위 | HTTP 요청 메서드 | | 표현 | 자원에 대한 행위의 구체적 내용 | 페이로드 |

REST API 설계 원칙

  1. URI는 리소스를 표현해야 한다.

    • 리소스를 식별할 수 있는 이름은 동사보다는 명사를 사용
      # bad
      GET /getTodos/1
      GET /todos/show/1
      # good
      GET /todos/1
    
  2. 리소스에 대한 행위는 HTTP 요청 메서드로 표현한다. HTTP 요청 메서드는 클라이언트가 서버에게 요청의 종류와 목적(리소스에 대한 행위)을 알리는 방법이다. 주로 5가지 요청 메서드를 사용하여 CRUD를 구현한다.

    | HTTP 요청 메서드 | 종류 | 목적 | 페이로드 | | ---------------- | -------------- | --------------------- | -------- | | GET | index/retrieve | 모든/특정 리소스 취득 | X | | POST | create | 리소스 생성 | O | | PUT | replace | 리소스의 전체 교체 | O | | PATCH | modify | 리소스의 일부 수정 | O | | DELETE | delete | 모든/특정 리소스 삭제 | X |

    # bad
    GET /todos/delete/1
    # good
    DELETE /todos/1
    
  • POST, PUT, PATCH: 요청 시에는 setRequestHeader 메서드를 사용하여 요청 몸체에 담아 서버로 전송할 페이로드의 MIME 타입을 지정해야 한다.