GET과 POST (feat. 멱등)

오늘은 HTTP 메서드 중 가장 많이 쓰이는 GET과 POST, 그리고 멱등(Idempotent)에 대해 적어볼까 합니다. GET - HTTP/1.1 스펙인 RFC2616에 따르면 GET은 서버로부터 정보를 조회하기 위해 설계된 메서드입니다. - URL의 쿼리스트링을 통해 정보를 전송합니다. URL에 조회 조건을 표시하기 때문에 북마크할 수 있습니다. - 불필요한 요청을 제한하기 위해 요청이 캐시 될 수 있습니다. JavaScript, CSS, Image 같은 정적 콘텐츠는 데이터양이 많데 반해 변경될 일은 적기 때문에 반복해서 동일한 요청을 보낼 필요가 없습니다. 따라서 정적 콘텐츠를 요청하고 나면 브라우저에서는 요청을 캐시 해두고, 동일한 요청이 발생할 때 서버로 요청을 보내지 않고 캐시 된 데이터를 사용합니다. 개발할 때 콘텐츠를 변경해도 내용이 변경되지 않는 경우가 있는데, 이때 캐시를 지워주면 다시 콘텐츠를 조회하기 위해 서버로 요청을 보내게 됩니다. - 멱등 입니다. POST - POST는 신규 리소스 등록 프로세스 처리를 하기 위해 설계된 메서드입니다. - 전송해야 할 데이터를 HTTP 메시지의 Body에 담아서 전송합니다. Body의 타입은 Content-Type 헤더에 따라 결정되기 때문에 요청 헤더의 Content-Type을 표시해야 합니다. - 서버에 리소스 업데이트의 목적이기 때문에 캐시 되거나, 브라우저 히스토리에 남지 않습니다. - 멱등이 아닙니다. 멱등이란(Idempotent) 수학적인 개념으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미합니다. - GET은 정보 조회가 목적이기 때문에 연산을 여러 번 적용(동일한 요청을 여러 번 전송) 하더라도, 동일한 응답이 돌아와 Idempotent 하게 설계되었습니다. - POST는, 서버의 상태나 데이터를 변경시키기 때문에, 연산을 여러 번 적용할 때 동일한 응답을 기대할 수 없습니다. (Non-idempotent) - 덮어쓰기 하는 PUT, 삭제하는 DELETE 메서드는 여러 번 적용하더라도 결과가 늘 동일하기 때문에 멱등 합니다. - 멱등은 서버에서 정상적인 응답을 못 주었을 때, 클라이언트에서 같은 요청을 해도 되는가의 판단 근거로 자동 복구 메커니즘에 사용됩니다.

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 1월 17일 오전 12:12

 • 

저장 267조회 6,466

댓글 0