HTTP Method 종류
- GET
- POST
- DELETE
- PUT
GET 메소드와 POST 메소드
- HTTP 프로토콜을 이용해서 서버에 데이터(요청 정보)를 전달할 때 사용하는 방식
GET 메소드 방식
- 개념
- 정보를 조회하기 위한 메소드
- 서버에서 어떤 데이터를 가져와 보여주기 위한 메소드
- 가져오는 것(Select)
- 사용 방법
- URL 끝에 '?'가 붙고, 요청 정보가 (key=value)형태의 쌍을 이루어 ?뒤에 붙여서 서버로 전송
- 요청 정보가 여러개 일 경우 '&'로 구분
- ex) 127.23.123.323?name1=value1&name2=value2
- 특징
- URL에 요청 정보를 붙여서 전송
- URL에 요청 정보가 뒤에 붙기때문에 요청 길이에 대해 제한이 있어서 대용량의 데이터를 전송하기 어려움
- 한 번 요청 시 전송 데이터(주소값 + 파라미터)의 양은 255자로 제한됩니다.(HTTP/1.1은 2048자)
- 요청 정보를 사용자가 쉽게 확인할 수 있음
- 그렇기때문에 보안에 취약합니다.
- HTTP 패킷의 body는 비어있는 상태로 전송
- 즉, Body의 데이터 타입을 표현하는 'Content-Type' 필드도 HTTP Request Header에 들어가지 않음
- POST 방식보다 빠름
- GET방식은 캐싱을 사용할 수 있다. GET 요청과 그에 대한 응답이 브라우저에 의해 캐싱
POST 메소드 방식
- 개념
- 서버의 값이나 상태를 바꾸기 위한 용도의 메소드
- 수행하는 것 (Insert, Update, Delete)
- 사용 방법
- 요청 정보를 HTTP 패킷의 body안에 숨겨서 서버로 전송
- Form 태그를 이용하여 submit하는 형태
- Request Header의 Content-Type에 해당 데이터 타입이 표현되며, 전송하고자하는 데이터의 타입을 적어줘야함
- Default : application/octet-stream
- 단순 텍스트의 경우 : text/plain
- 파일의 경우 : multipart/form-date
- 특징
- Body안에 요청 하는 데이터를 숨겨서 전송하기 때문에 보안상 GET방식보다 안전하고, 대용량의 데이터를 전송할 수 있음
- 클라이언트 쪽에서 데이터를 인코딩하여 서버로 전송하고, 이를 받은 서버쪽이 데이터를 디코딩
PUT 메소드 방식
- 개념
- 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용
- 사용 방법
- POST 방식과 비슷하지만 이미 있는 값의 UPDATE를 할 때 사용하여 Idempotent합니다.
- 특징
- 여러 번 요청해도 동일한 결과입니다. (Idempotent, 멱등)
- Body의 수정할 값을 넣어서 서버로 전송합니다.
DELETE 메소드 방식
- 정의
- 지정된 리소스를 삭제합니다.
- 사용방법
- GET과 비슷한 방식으로 URL에 삭제할 데이터를 파라미터에 추가하여 서버에 전송합니다.
- 특징
- Body에 삭제할 데이터를 넣는 것이 아닌 URL에 포함시켜 전송합니다.
Q. 조회하기위한 용도로 사용할 때 POST가 아닌 GET 방식을 사용하는 이유?
- 설계원칙에 따라 GET방식은 서버에게 여러번을 요청해도 동일한 응답이 돌아와야함.(Idempotent, 멱등)
- GET방식은 가져오는 것(Select)로, 서버의 데이터나 상태를 변화시키지 않아야함.
- ex) 게시판의 리스트, 게시글 보기 기능
- 예외) 방문자의 로그 남기기, 글을 읽은 횟수 증가 기능
- POST방식은 수행하는 것으로, 서버의 값이나 상태를 바꾸기 위한 용도
- ex) 게시판의 글 쓰기 기능
- GET방식은 가져오는 것(Select)로, 서버의 데이터나 상태를 변화시키지 않아야함.
- 웹에서 모든 리소스는 Link할 수 있는 URL을 가지고 있어야함.
- 어떤 웹페이지를 보고 있을 때 다른 사람한테 그 주소를 주기 위해서 주소창의 URL을 복사해서 줄 수 있어야 함.
- 즉, 어떤 웹페이지를 조회할 때 원하는 페이지로 바로 이동하거나 이동시키기 위해서는 해당 링크의 정보가 필요
- 이때 POST 방식을 사용할 경우에 값(링크의 정보)이 Body에 있기 때문에 URL만 전달할 수 있으므로 GET 방식을 사용해야 함. 그러나 글을 저장하는 경우 URL을 사용할 필요가 없기때문에 POST 방식을 사용함.
'Network' 카테고리의 다른 글
[Network] REST와 RESTful (0) | 2021.10.22 |
---|---|
[Network] 쿠키와 세션 (0) | 2021.10.21 |
[Network] HTTP와 HTTPS (0) | 2021.10.21 |
[Network] 3-way-handshake와 4-way-hanshake (0) | 2021.10.17 |
[Network] TCP와 UDP (0) | 2021.10.17 |