본문 바로가기
IT 지식/웹 프로그래밍

[웹 프로그래밍] HTTP Method

by 이민우 2021. 4. 2.
728x90
반응형

HTTP Method 중 시험이나 면접에 자주 출제되는 질문은 GET 과 post의 차이, 그리고 PUT과 PETCH의 차이이다.

 


 

GET vs POST

 

GET 과 post는 요청에서 사용된다.

그러나 세부적으로 보면 GET은 조회 기능 이용시, POST는 등록 기능 사용시 사용된다.

이유라면 방식의 차이 때문이다.

 

GET 은 URL뒤에 데이터를 추가해서 서버에 요청하는 방식을 사용한다.

이러한 방식은 빠른 데이터 로딩이 가능하지만, 아무래도 전송하는 정보가 눈에 보일 수 있어 보안에 취약하다. 그리고 URL의 전송 가능한 데이터의 길이 제한이 존재한다.

 

http://www.사이트명.com/하위디렉터리?variable1=값&variable2=값...

 

또한 실수로 새로고침을 누를 경우 다시 한 번 요청이 되어 등록 시에는 두 개의 게시물이 등록되고 삭제 시에는 두 번의 삭제가 일어날 수 있다.

그렇기에 등록보다 조회에만 사용된다.

이러한 점을 Idempotent(멱등)이라고 하는데, GET은 동일한 요청에 대해 동일한 결과가 나오도록 설계되어 있기 때문에 늘 같은 상태를 보장할 수 있는 조회에만 사용되어야 한다.

 

 

그에 반해 POST는 전송하는 정보를 HTTP 메시지의 Body 부분에 담아 전송한다.

이러한 방식은 아무래도 GET 방식에 비해 느릴 수 있다. 전송하려는 데이터를 형식에 맞게 변경하여 보내고, 받은 데이터를 다시 파싱하는 과정이 요구되기 때문이다.

하지만 사용자의 눈에 보이지 않아 보안에 좋고, 전송 가능한 데이터의 길이 제한 또한 없다.

또한 POST는 Non-idempotent(비멱등)이고, 동일한 요청에 대해 다른 응답을 가질 수 있다. 즉 동일한 여러 번의 요청에 안전하여 이중으로 등록되는 경우가 없다.

 


 

PUT vs PETCH

 

PUT과 PETCH는 데이터의 수정에 활용된다.

 

PUT은 데이터의 전체를 수정해야 한다.

만약 데이터의 전체가 아닌 일부만 전달할 경우, 전달하지 않은 부분들은 NULL 혹은 초기값으로 설정되어 저장되게 된다.

 

PETCH의 경우에는 데이터의 부분 수정을 지원한다.

728x90
반응형