HTTP 메소드
HTTP(Hypertext Transfer Protocol)은 클라이언트(사용자)와 서버의 통신을 가능하게 해주도록 설계되었다.
HTTP는 서버와 클라이언트 간 요청과 응답 프로토콜로 통신을 한다.
HTTP 메소드의 종류
- GET
- POST
- PUT
- HEAD
- DELETE
- PATCH
- OPTIONS
- CONNECT
- TRACE
가장 많이 사용하는 HTTP 메소드는 GET과 POST이다.
그래서 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 메소드는 대상 리소스의 경로를 테스트하는 메시지 루푸백 테스트를 수행하는데에 사용된다.
(디버깅 목적으로 사용한다.)
도움이 된 글
'개발 > 네트워크' 카테고리의 다른 글
[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 |
댓글