[Web] GET / POST

effiRin·2022년 6월 24일
0
post-thumbnail

1_2UbC5pSRyjGmF1ezB9hvYg

  • 사용자가 URL을 주소창에 입력해서 어떤 웹페이지를 보여달라고 요청(request)를 하면, 서버 내부에서는 클라이언트의 요청에 응답(response, 웹페이지로 표현)하기 위해 처리를 해야 한다.
  • 이때, 클라이언트가 서버로 요청을 보내는 방법인 HTTP 메소드가 사용되는데, (여러 가지 HTTP 메소드가 있지만) 크게 GET 방식과 POST 방식이 있다.



GET과 POST 차이

 GETPOST
정의클라이언트가 서버에게 어떤 리소스로부터 정보를 요청하기 위해 사용되는 메소드클라이언트가 서버에게 (리소스를 생성/업데이트하기 위해) 어떤 데이터를 전송하는 메소드
기능데이터 읽기, 검색데이터 추가, 수정
데이터의 위치요청 헤더(Header)요청 바디(Body)
전송 방식URL 주소 끝에 변수(쿼리 스트링)를 포함시켜 전송한다. (URL 노출)데이터를 HTTP 메세지의 Body에 담아서 전송한다. (URL에 노출하지 않고 요청)
데이터 전송량간단한 데이터를 URL에 넣도록 설계된 방식으로 데이터 전송량에 한계가 있다.* HTTP 메시지의 Body는 길이의 제한없이 데이터를 전송할 수 있어 대용량 데이터 전송 가능.
*
그러나 최대 요청 시간 Time Out이 존재
→ 클라이언트가 페이지를 요청하고 기다리는 시간)
Content-Type* 특별히 전송하는 데이터가 없어 body는 보통 빈 상태로 전송됨.
*
또한 Content-type 헤더필드도 들어가지 않음.
* 헤더 중 Body의 데이터를 설명하는 Content-Type이라는 헤더 필드가 들어가고, body의 데이터 타입을 명시해줘야 한다.
캐싱
(한번 접근 후, 또 요청할 때 빠른 접근을 위해 레지스터에 데이터를 저장시켜 놓는 것)
캐싱 가능
URL에 데이터가 노출되므로, 캐싱을 하여 속도를 높이거나 즐겨찾기, 북마크 등 추가 가능함
캐싱 불가능
* URL에 데이터가 노출되지 않으므로 즐겨찾기, 북마크 불가능.
* 하지만 쿼리스트링(문자열)데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스와 같은 객체들의 값도 전송 가능
보안URL에 데이터가 노출되기 때문에 보안에 취약하다.
(민감한 데이터는 GET 요청을 사용하지 않음)
POST는 BODY에 숨겨서 보내는 방식으로, GET 방식보다 비교적 덜 공개적이기 때문에 아이디, 패스워드 같이 중요한 정보를 보낸다.
그러나 완전히 안전하진 않으므로, http 프로토콜의 암호화된 버전인 HTTPS를 사용한다.



[추가] 왜 GET은 조회, POST는 수정일까?

GET, POST 메소드 모두 데이터 전송과 요청이 가능한데, 어떤 이유로 ‘GET’은 주로 조회, ‘POST’는 수정할 때 사용해야 한다는 걸까?

GETIdempotent, POSTNon-idempotent하게 설계되었기 때문이다.

여기서 ‘Idempotent’는 동일한 연산을 여러 번 수행하더라도 동일한 결과가 나타나는 것을 뜻한다.

dempotent하도록 설계된 GET 방식은 서버에게 동일한 요청을 여러 번 전송해도 동일한 응답이 돌아와야 하고,

Non-idempotent하게 설계된 POST는 동일한 요청을 여러 번 전송해도 응답이 항상 다를 수 있다.

따라서 GET은 서버의 데이터나 상태를 변경하지 않아야 Idempotent를 유지하므로 주로 조회할 때 사용하고,

POST는 응답이 달라도 되니 서버의 상태나 데이터를 변경할 때 사용된다.



References

https://velog.io/@songyouhyun/Get과-Post의-차이를-아시나요

https://mangkyu.tistory.com/17

https://betterprogramming.pub/understand-the-flow-of-a-http-request-1a268ec193f0

profile
모종삽에서 포크레인까지

0개의 댓글