REST API와 HTTP Method

초콜렛빵·2022년 5월 7일
0

TIL

목록 보기
2/27

REST API

REST 란,

  • REST는 HTTP 통신 방식 중 하나이다. REST는 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것을 의미한다.
  • 자세히 말하면, HTTP URI를 이용하여 자원을 명시하고, HTTP Method를 이용해서 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다

구성요소

  1. 자원: URI
    • 해당 자원에 대한 고유 ID가 있으며, 이 자원은 서버에 존재
    • 자원을 구분하는 것은 '/groups/:group_id'와 같은 HTTP URI이다.
  2. 행위: HTTP Method
    • HTTP Method를 사용하며, GET, POST, PUT, DELETE, PATCH를 제공
  3. 표현
    • Client가 자원의 상태에 대한 조작 요청하면 Server는 이에 대한 응답을 보냄
    • REST는 자원을 JSON, XML, TEXT, RSS 등 여러 형태로 나타남

장단점

  • 장점
    • HTTP 프로토콜의 인프라 그대로여서, 별도 인프라가 필요 없음
    • 모든 플랫폼에서도 사용이 가능
    • REST API 메시지가 의도하는 바를 나타내므로 파악이 쉽다.
    • 서버와 클라이언트의 역할을 명확히 분리
  • 단점
    • 표준이 존재하지 않음

필요성

  • 애플리케이션 분리 및 통합
  • 다양한 클라이언트(브라우저, 안드로이드, IOS 등) 에서도 통신 가능, 이러한 멀티플랫폼에 대한 지원이 필요성이 생김

특징

  1. Server-Client 구조
    • 자원이 있는 쪽이 Server, 요청하는 쪽을 Client
    • 서로 간 의존성이 줄어듬
  2. Stateless
    • HTTP 프로토콜을 따라서 REST 역시 무상태성을 갖음
    • Client의 context를 Server에 저장하지 않음
      • 세션과 쿠키와 같은 정보를 신경쓰지 않아 구현이 단순
    • Server는 이에 따라 각각의 요청을 별개의 것으로 인식 및 처리
      • 이전 요청과 다음 요청은 연결되지 않음
      • Server의 처리 방식에 일관성 부여하지 않고, 자유도 높아짐
  3. Cacheable(캐시 처리 가능)
    • HTTP 프로토콜에서 사용하던 캐싱 기능 적용 가능
    • 대량의 요청을 효율적으로 처리 가능
    • 캐시를 이용하여 응답시간이 빨라지고, 전체 응답시간, 성능, 서버 자원 이용률 향상 가능
  4. Layered System(계층화)
    • Client는 REST API Server 호출
    • Server는 다중 계층으로 구성
  5. Code-On-Demand
    • Server로부터 스크립트를 받아 Client 실행
  6. Uniform Interface
    • URI로 지정한 리소스에 대해 한정적인 인터페이스로 수행
    • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능

HTTP Method

멱등성

  • 멱등성이란, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 말한다.

GET

  • 단순한 조희를 이용하기 위해 사용하는 Method(CRUD 중 Read)
  • 여러 번 수행해도 단순 조회만 이루어지므로, 같은 효과를 기대할 수 있음
  • 멱등성과 안전한 메소드가 성립

POST

  • 새로운 리소스를 생성하기 위해 사용하는 Method(CRUD 중 Create)
  • 하위 리소스들을 생성하는데 사용
  • 멱등성 보장되지 않고, 안전한 메소드도 아님

PUT

  • 요청한 리소스에 있는 자원으로 대체하는 Method(CRUD 중 Update or Create)
  • 전체에 대해서 대상을 저장하기도 하고, 변경을 하기도 함
  • 데이터가 없으면, 생성이 될 것이고 아니면 데이터는 수정이 되는 방식
  • 이에 따라, 멱등성이 보장

PATCH

  • 부분적인 수정을 적용하기 위해 사용하는 Method(CRUD 중 Update)
  • PUT Method는 해당 자원의 상태를 모두 알아야 전체가 대체되는 반면 PATCH의 경우에는 부분적인 수정이 가능하므로 전체를 알 필요는 없음
  • 이에 따라, 멱등성이 보장이 되지 않음

DELETE

  • 리소스의 삭제를 위해 사용하는 Method(CRUD 중 Delete)
  • 해당 요청에 대해 리소스가 삭제가 진행이 됨
  • 이미 삭제가 되었든, 삭제를 진행하던 동일하기 때문에 멱등성이 보장

참조

profile
차근차근 기록하고 배우는 개발자

0개의 댓글