본문 바로가기
개발/네트워크

[Network] HTTP 메소드 (GET, POST)

by 그레이웅 2022. 10. 11. 15:59
반응형

HTTP 메소드

HTTP(Hypertext Transfer Protocol)은 클라이언트(사용자)와 서버의 통신을 가능하게 해주도록 설계되었다.

HTTP는 서버와 클라이언트 간 요청과 응답 프로토콜로 통신을 한다.

 

HTTP 메소드의 종류

- GET

- POST

- PUT

- HEAD

- DELETE

- PATCH

- OPTIONS

- CONNECT

- TRACE

 

가장 많이 사용하는 HTTP 메소드는 GETPOST이다.

그래서 GET과 POST 메소드를 중점적으로 알아보도록 하자.

 

GET 메소드

GET 메소드는 지정된 리소스에서 데이터를 요청할 때 사용된다.

쿼리 스트링(키와 값) 쌍으로 GET 요청의 URL로 전송된다.

 

naver.com?name=1value&name2=value2

위 예제와 같이 name이라는 키 값과, value라는 값이 같이 url로 전송된다.

가끔 어떤 홈페이지를 보면 URL주소?page=1, URL주소?page=2 이런식으로 넘어가는 주소창을 간혹 본적 있을 것이다.

현재 페이지의 데이터를 넘기기 위해 GET 메소드의 쿼리 스트링으로 값을 넘겨주는 것이다.

 

GET 메소드의 특징

- GET 요청은 캐시가 가능하다.

- GET 요청은 브라우저 기록에 남게된다.

- GET 요청을 북마크에 추가할 수 있다.

- 민감한 데이터를 처리할때 GET 요청을 사용하면 안된다. 

 (주소창에 남아있기 때문에 보안에 취약하다.)

- GET 요청은 길이의 제한이 있다.

(GET 요청은 실제 경로의 문자 수를 뺀 2,048자로 제한된다.)

- GET 요청은 데이터 요청에만 사용된다.(수정할 수 없다.)

 

 

POST 메소드

POST는 리소스를 생성 및 업데이트 하기위해 서버에 데이터를 보내는 데 사용된다.

POST를 통해 서버로 보내진 데이터는 HTTP Request Body에 저장된다.

 

POST /test/demo_form.php HTTP/1.1
Host: w3schools.com

name1=value1&name2=value2

다음과 같은 형식으로 저장하게 된다.

 

POST 메소드의 특징

- POST는 캐시되지 않는다.

- POST는 브라우저 기록에 남지 않는다.

- POST는 북마크 할 수 없다.

- POST 요청은 데이터 길이에 제한이 없다.

 

 

GET과 POST METHOD의 비교

  GET POST
뒤로가기/새로고침 뒤로가기 및 새로고침을 하여도 상관이 없다. 사용자의 요청이 다시 제출(re-submit) 된다.
북마크 북마크 가능 북마크 불가능
캐시 여부 캐시 가능 캐시 안됨
인코딩 타입 application/x-www-form-urlencoded application/x-www-form-urlencoded 또는
multipart/form-data 
multipart encoding for binary data를 사용한다.

히스토리 파라미터가 브라우저 히스토리에 남아있음 파라미터가 브라우저 히스토리에 저장되지 않음
데이터 길이 제한 최대 URL 길이가 2048 자로 제한 제한 없음
데이터 타입 제한 ASCII 제한없음 바이너리 데이터도 사용가능하다.
보안 POST에 비해 보안이 떨어짐 정보가 브라우저 기록에 남지 않기 때문에 GET 보다는 안전하다.
외부 노출 여부 데이터가 URL에 노출됨 데이터가 URL에 노출되지 않음

 

그 외의 HTTP 메소드

- PUT 메소드

 

PUT메소드는 리소스를 생성 및 업데이트 하기 위해 서버에 데이터를 보내는데 사용된다.

POST와의 차이점은 PUT 요청이 멱등적이라는 차이점이 있다.

멱등적이라는 말은 동일한 PUT 요청을 여러 번 호출해도 항상 동일한 결과가 생성된다.

반면 POST 메소드는 요청을 반복하면 동일한 리소스를 여러번 생성하게 된다.

 

- HEAD 메소드

HEAD는 GET과 동일하지만 HTTP Response Body가 없다.

GET 메소드를 사용하여 /users 를 요청하면 사용자 목록을 불러오지만 HEAD 메소드는 /users 를 요청해도 사용자 목록을 불러오지 않는다.

 

HEAD 메소드는 큰 파일이나 Response Body를 다운로드 하기 전과 같이 실제 GET 요청을 하기 전에 GET이 반환할 내용을 확인하는데 유용하다.

 

- DELETE 메소드

DELETE 메소드는 지정된 자원을 삭제할 때 사용한다.

 

- PATCH 메소드

PATCH 메소드는 리소스의 부분 수정을 적용하는데 사용한다.

 

- OPTIONS 메소드

 OPTIONS 메소드는 대상 리소스의 통신 옵션을 설명하는데 사용한다.

 

- CONNECT 메소드

CONNECT 메소드는 요청된 리소스와 양방향 통신(터널)을 할때 사용한다.

 

- TRACE 메소드

TRACE 메소드는 대상 리소스의 경로를 테스트하는 메시지 루푸백 테스트를 수행하는데에 사용된다.

(디버깅 목적으로 사용한다.)

 

도움이 된 글

- https://www.w3schools.com/tags/ref_httpmethods.asp

반응형

'개발 > 네트워크' 카테고리의 다른 글

[NetWork] DNS Recode type  (0) 2022.10.21
[NetWork] CORS(Cross-Origin Resource Sharing)  (0) 2022.10.08
REST API는 무엇일까?  (1) 2022.10.07
[Network] DNS(Domain Name System)란?  (0) 2022.10.06
HTTP 상태 코드 (status code)  (1) 2022.09.30

댓글