HTTP의 GET과 POST 비교

itonse·2024년 6월 28일
0

CS 스터디

목록 보기
54/56

GET

http://velog.io/write?id=itonse

  • 정보 요청, 데이터를 URL의 쿼리 스트링에 key=value 형식으로 포함시켜 전송하며, 파마리터가 여러개인 경우 & 기호로 구분합니다.
  • 요청하는 데이터가 HTTP Request Message의 Header 부분에 url이 담겨서 전송된다.
  • 데이터가 url 이라는 공간에 담겨가기 때문에 전송할 수 있는 데이터의 크기가 제한적이다
  • 패스워드 같은 보안이 필요한 데이터에 대해서는 데이터가 그대로 url에 노출되므로 적절하지 않다

POST

http://velog.io/login

// body
{
  "email": "user@example.com",
  "password": "password123"
}
  • 데이터를 body에 담아서 리소스를 생성하거나 변경
  • POST 방식의 request는 HTTP Request Message의 Body 부분의 데이터가 담겨서 전송된다.
  • 전송하는 데이터 크기가 GET 방식보다 크고 보안면에서 우세하다.



GET 방식과 POST 방식 비교

1. 용도 및 영향

GET은 SELECT 적인 성향을 갖고 있어서 서버에서 데이터를 가져와서 보여주는 용도에 쓰이며 서버의 값이나 상태 등을 변경하지 않는다.

반면에 POST는 서버의 상태를 변경하기 위해서 또는 추가하기 위해서 사용되는데 이는 INSERT 또는 UPDATE 문과 비슷한 역할을 한다.

2. 브라우저 캐싱과 응답시간

GET 방식의 요청은 브라우저 캐싱이 가능하다. 이는 브라우저가 한 번 받아온 데이터를 임시 저장소에 저장해두고, 재요청이 발생했을 때 캐시된 데이터를 재사용함으로써 더 빠른 응답 속도를 제공할 수 있다.

반면에 POST 방식은 브라우저 캐싱을 사용하지 않는데, 이는 POST 요청이 서버의 상태를 변경할 수 있는 작업을 수행하기 때문에 각 요청이 고유해야 하고 캐싱이 적절하지 않을 수 있다. 따라서 POST 요청은 매번 서버로부터 새로운 데이터를 받아와야 하며, 이로 인해 GET 방식에 비해 응답 시간이 느릴 수 있다.


특징GET 방식POST 방식
URL 형식http://velog.io/write?id=itonsehttp://velog.io/login
데이터 전달URL에 파라미터를 추가하여 데이터 전송HTTP 요청 본문(body)을 통해 데이터 전송
데이터 길이URL 길이 제한이 있음 (2,048자 이하)본문 크기에 대한 제한이 더 넓음 (최대 2GB)
보안성URL에 데이터가 노출되므로 보안성이 낮음요청 본문에 데이터를 숨겨 보낼 수 있어 보안성이 높음
캐싱브라우저에서 자동으로 캐싱 가능브라우저 캐싱이 일반적으로 사용되지 않음
사용상황데이터 조회나 사용자가 입력한 정보가
노출되어도 괜찮은 경우
데이터 추가, 수정, 삭제 등 서버의 상태를 변경해야 할 때
또는 사용자 정보의 보안이 필요한 경우


ref.
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/main/Network
https://mundol-colynn.tistory.com/141

0개의 댓글