HTTP 메소드의 멱등성

Taehye.on·2023년 4월 1일
0

🧐

목록 보기
3/4
post-thumbnail

🔍 멱등성 (Idempotent)

멱등성이란 어떠한 값에 대해 여러번 동일한 연산을 수행하였을 때,
호출 횟수에 구애받지 않고 동일한 결과값을 내어주는 성질이다.

HTTP 메소드에서도 동일하게 적용될 수 있다.
동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니며,
서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다 말한다.

멱등성을 따질 때는 서버의 상태만 바라보면 되므로 HTTP 응답 상태는 신경쓰지 않아도 된다.

📌 HTTP Method 의 멱등성

  • POST
    • POST 메소드는 호출될 때 마다 데이터 베이스 등에 요청된 데이터가 추가될 것이며 이는 호출 마다 서버의 상태가 달라진다. 그래서 POST는 멱등성의 성질을 가졌다 할 수 없다.

  • PATCH
    • PATCH 메소드는 멱등성을 보장하도록 설계할 수 있지만, 멱등성을 보장하지 않도록 설계할 수도 있다. PATCH와 비슷한 PUT은 요청에 대해 리소스를 전부 바꿔 멱등성이 보장되지만, PATCH는 리소스의 일부에 대한 변화를 명령할 수 있다.
    {
       "operation" : "add",
       "age" : 1
    }
      위와 같은 요청을 PATCH 메소드를 사용하면 해당 리소스의 age 필드는 요청마다 1씩 증가하게 된다. 즉 단일 호출에 대한 응답과 다중 호출에 대한 응답에 대한 서버의 상태가 달라질 것이고, 이는 멱등하지 않음을 의미한다.

    📌 안전한 메소드

    안전한 메소드는 서버의 상태를 벼경시키지 않는 HTTP 메소드를 의미한다. GET, OPTIONS, HEAD와 같이 조회에 사용되는 메소드를 안전하다 말할 수 있다. 안전한 모든 메소드는 멱등성을 가지지만 그 역은 성립하지 않는다.

    PUTDELET메소드는 멱등성을 가지지만 PUT은 리소스를 수정하고 DELETE는 제거하므로 안전한 메소드라 할 수 없다.

    따라서 멱등성은 요청에 대한 서버 상태가 같은지가 중요하다 볼 수 있다.

    0개의 댓글