멱등성 (Idempotent)
같은 연산을 여러번 실행해도 그 결과가 달라지지 않는 성질을 의미.
ex)
const sum = (a,b) => a+b
동일한 인자를 넣고 여러번 실행시켜도 같은 값을 반환하기 때문에 멱등성을 갖는다.
HTTP Method 의 멱등성
멱등성의 개념은 HTTP 에서도 동일하게 적용될 수 있다. 동일한 요청을 한번 보내는 것과, 여러번 보내는 것이 서로 동일한 효과를 지니고, 서버의 상태도 동일하게 남을 때 해당 HTTP Method 가 멱등성을 갖는다고 이야기한다. 멱등성을 따질 때에는 서버의 상태만 바라보면 되며, HTTP 응답 Status는 신경쓰지 않아도 된다.
멱등성을 갖는 메소드
- GET : 서버에 존재하는 리소스를 단순히 읽어오기만 하는 메소드이기 때문에 당연히 여러번 수행되어도 결과값은 변하지 않기 때문에 멱등성을 가진다.
- PUT : 서버에 존재하는 리소스를 요청에 담긴 내용대로 통째로 대체해버리므로 올바르게 구현하였다면 여러번 수행되어도 결과 값은 변하지 않는다.
- DELETE : 존재하는 데이터를 삭제한 결과와 이미 존재하지 않은 결과를 삭제하려는 시도에 대한 응답 코드는 서로 다르겠지만, (200 OK 또는 404 NOT FOUND) 서버의 상태 자체는 변하지 않으므로 올바르게 구현되었다면 여러번 수행되어도 멱등성을 갖는다.
멱등성을 갖지 않는 메소드
- POST : 메소드가 호출될 때 마다 데이터베이스 등에 요청된 데이터가 추가될 것 이고, 이는 곧 멱등성을 위배함을 알 수 있다. 호출시 마다 서버의 상태가 달라지기 때문이다.
- PATCH : 리소스의 일부에 대하여 변화를 명령할 수 있기 때문에 멱등성을 갖지 못한다.
'CS' 카테고리의 다른 글
리액티브 프로그래밍(Reactive Programming) (0) | 2023.01.13 |
---|---|
객체지향 5원칙 SOLID (0) | 2023.01.10 |
계층화 아키텍처 (Layered Architecture) / MVC Pattern / Node.js에서의 적용 (0) | 2023.01.10 |
RESTful API 쉽게 이해하기 (0) | 2023.01.09 |
[OS] 메모리 계층 구조 쉽게 이해하기 (0) | 2023.01.04 |