Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

ENN

HTTP 메서드와 멱등성(idempotent) 본문

백엔드

HTTP 메서드와 멱등성(idempotent)

ParkIsComing 2022. 9. 2. 01:37

HTTP API와 REST API

HTTP API는 HTTP를 통신방식으로 사용하는 API를 일컫는다. REST API는 HTTP API보다 좁은 개념으로 사용되며,  REST를 지키면서 사용되어야 하는 API를 일컫는다. 이때 REST는 Representational State Transfer의 약자로 다음 4가지 조건을 만족해야 한다.

  1. 자원의 식별
  2. 메시지를 통한 리소스 조작
  3. 자기서술적 메시지
  4. 애플리케이션의 상태에 대한 엔진으로서의 하이퍼미디어

 

HTTP 메서드

CRUD에 각각 대응되는 HTTP 메소드는 다음과 같다.

CRUD HTTP method
Create POST
Read GET
Update PUT / PATCH
Delete Delete

여기서 궁금증이 생길 것이다. 업데이트를 할 때 사용할 수 있는 PUT과 PATCH의 차이점은 무엇일까? PUT은 요청마다 같은 리소스를 반환하여 데이터를 전부 수정하지만, PATCH는 일부분만 수정할 수 있어 요청마다 다른 리소를 반환할 수 있다. PUT처럼 매 요청마다 같은 리소를 반환하면 '멱등하다'고 하는데 이어서 멱등성에 대해 더 자세히 알아보자.

멱등성(Idempotence)

요청을 여러번 보내도 매번 같은 리소스를 반환할 때, 이를 '멱등하다'고 일컫는다. 동일한 요청을 한 번 보내든, 여러번 보내든 같은 효과가 나고, 서버의 리소스 상태(응답)도 동일하게 남는다면 해당 HTTP 메서드는 멱등하다고 할 수 있다. 그렇게 위에서 언급한 5개의 메서드 중에 멱등성을 가지지 않는 메서드는 무엇일까? 

 

답은 미리 언급한 PATCH과 POST이다. POST의 경우 같은 요청을 여러번 보내면 매번 새로운 자원이 생겨날 수 있고, 결국 서버의 상태가 변경될 수 있기 때문에 멱등성을 가지지 않는다.  PATCH의 경우 앞서 설명한 것과 같다.

 

그렇다면  GET, PUT, DELTE는 왜 멱등성을 가지는지 알아보자. GET의 경우 같은 요청을 여러번 보내면 매번 같은 리소스에 대한 요청을 보낸 것이기 때문이다. DELETE는 처음 요청을 보내면 특정 리소스가 삭제되고, 여러번 요청을 보내도 해당 리소스는 이미 삭제된 상태이니 서버의 리소스 상태도 동일할 것이다. PUT의 경우 앞서 설명한 것과 같다.

 

 

REST API 설계 원칙

  • -'/'는 계층 관계를 나타낸다.
  • URI 끝에 '/'를 포함하지 않는다.
  • 하이픈(-)은 가독성을 위해 사용한다.
  • 언더스코어(_)는 URI에 사용하지 않느다.
  • URI에는 소문자가 적합하다.