Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

거인의 코딩일지

[C.S] HTTP 메서드의 멱등성?? 안전한 메서드??? 본문

코딩/기초지식

[C.S] HTTP 메서드의 멱등성?? 안전한 메서드???

코딩거인 2023. 10. 18. 10:11
728x90
멱등성(Idempotent)이란??

  • 수학이나 전산학에서의 멱등성의 의미는 같은 연산을 여러번 실행해도 그 결과가 달라지지 않는 성질
// ex) 멱등성을 갖고 있는 함수
public int abs(int number) {
    return Math.abs(number);
}
  • 위 함수는 아무리 임의의 값에 연산을 여러번 적용하더라도 같은 결과값을 반환한다.
  • 즉, 멱등성의 핵심은 어떠한 값에 대하여 여러번 동일한 연산을 수행하였을 때 호출 횟수에 구애받지 않고 동등한 결과값을 내어주는 성질

 

HTTP Method 의 멱등성??
  • 멱등성의 개념은 HTTP 에서도 동일하게 적용될 수 있다.
  • 동일한 요청을 한번 보내는 것과 여러번 보내는 것이 같은 효과를 지니고 서버의 상태도 동일하게 남을 때 해당 HTTP  Method 가 멱등성을 가지고 있다고 말한다.
  • 멱등성을 따질 때에는 서버의 상태만 바라보면 되며, 해당 HTTP 응답 Status 는 신경쓰지 않아도 된다.
  • REST API 에서 자주 사용하는 HTTP Method 중 get, post, put, delete 중 post 를 제외하고 멱등성이 보장 되어야한다.
    • GET
      • 서버에서 존재하는 리소스를 단순히 읽어오기만 하는 메소드
      • 여러번 수행되어도 결과값은 변하지 않음
      • 마찬가지로 HEAD, OPTIONS  메소드도 조회에 대한 메소드이기에 멱등하다고 할 수 있다.
    • PUT
      • 서버에 존재하는 리소스를 요청에 담긴 내용대로 통채로 대체하기에 올바르게 구현하였다면 여러번 수행되어도 결과값은 변하지 않는다.
    • DELETE
      • 존재하는 데이터를 삭제한 결과와 이미 존재하지 않은 결과를 삭제하려는 시도에 대한 응답은 서로 다르지만, 서버의 상태 자체는 변하지 않으므로 올바르게 구현되었다면 여러번 수행하여도 멱등성이 보장된다.
    • POST
      • 메소드가 호출될 때 마다 데이터베이스 등에 요청된 데이터가 추가될 것이고, 이는 곧 멱등성을 위배함을 알 수 있다.
      • 호출시 마다 서버의 상태가 달라지기 떄문.
    • PATCH
      • PATCH 메소드는 항상 멱등성을 보장한다고 이야기 할 수 없다.
      • 멱등성을 보장하도록 설계할 수 있지만, 멱등성을 보장하지 않도록 설계도 가능
      • PUT 은 요청에 대하여 리소스를 통채로 바꿔버리기에 멱등성이 보장되지만, PATCH 는 리소스의 일부에 대하여 변화를 명령할 수 있기 때문이다.

 

안전한 메소드??? 
  • 안전한 메소드란, 서버의 상태를 변경시키지 않는 HTTP 메소드를 의미한다.
  • GET , OPTION, HEAD 와 같이 조회에 사용되는 메소드를 안전하다고 이야기 할 수 있다.
  • 모든 안전한 메소드는 멱등성을 가지고 있지만 그 반대는 성립되지 않는다.
    • PUT 과 DELETE 메소드는 멱등성을 갖는다고 이야기 했지만 PUT은 리소스를 수정하고 DELETE 는 메소드를 제거하므로 안전한 메소드라고 할 수 없다.
  • 즉, 멱등성을 갖는 메소드가 서버의 상태를 변경하지 않는다고 오해하면 안된다.
  • 멱등성을 갖는 메소드도 서버의 상태를 변경시킬 수 있다.
  • 멱등성의 핵심은 "요청에 대한 서버의 상태가 항상 같은가?" 이다.

 

참고

 

HTTP 메소드의 멱등성, 그리고 안전한 메서드

https://nordicapis.com/understanding-idempotency-and-safety-in-api-design/ 멱등성 (Idempotent) 수학이나 전산학에서의 멱등성의 의미는 같은 연산을 여러번 실행한다고 해도 그 결과가 달라지지 않는 성질을 의미한

hudi.blog

 

728x90