개발 CS지식 정리 - HTTP의 GET과 POST 비교

진형욱·2022년 11월 8일
0

개발면접공부

목록 보기
3/8
post-thumbnail

개발 cs지식 스터디를 하며 내가 학습한 부분을 정리하는 공간입니다.

네트워크

HTTP

웹상에서 클라이언트와 서버 간에 요청/응답으로
데이터를 주고 받을 수 있는 프로토콜이다.

클라이언트가 HTTP 프로토콜을 통해 서버에게 요청을 보내면
서버는 요청에 맞는 응답을 클라이언트에게 전송한다.

이때 HTTP 메소드는 서버가 요청을 수행하기 위해
해야할 행동을 표시하는 용도로 사용한다.

이 HTTP 메소드 중에서 GET과 POST의 특징과 차이점을 알아보겠다.

GET

GET은 서버로부터 정보를 조회하기 위해 설계된 메소드이다.

GET 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송한다.
요청하는 데이터가 HTTP Request MessageHeader 부분에 url이 담겨서 전송된다.

URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루어 request를 보내게 되며
이러한 방식의 파라미터를 쿼리스트링이라고 부른다.

(만약, 요청 파라미터가 여러 개이면 &로 연결한다.)

쿼리스트링 : URL의 뒤에 입력 데이터를 함께 제공하는 가장 단순한 데이터 전달 방법

하지만 이런 방식은 url이라는 공간에 담겨가기 때문에
전송할 수 있는 데이터의 크기가 제한적이다.

보안이 필요한 데이터에 대해서는
그대로 url에 노출되므로 GET 방식은 적절하지 않다.

POST

POST는 리소스를 생성/변경하기 위해 설계되었다.
POST방식의 request는 HTTP Request MessageBody 부분에
데이터가 담겨서 전송된다.

길이의 제한 없이 데이터를 전송할 수 있으므로
데이터의 크기가 GET 방식보다 크고 내용이 눈에 보이지 않아 보안면에서 POST가 낫다.
(하지만 보안적인 측면에서는 암호화를 하지 않는이상 고만고만하다.)

GET과 POST의 차이

GET은 Idempotent / POST는 Non-idempotent하게 설계되어잇다.

Idempotent(멱등)은 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로 => 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질

즉, 멱등이라는 것은 동일한 연산을 여러 번 수행하더라도 동일한 결과가 나타나야한다.

Get => Idempotent

Get이 Idempotent하도록 설계되었다는 것은 서버에게 동일한 요청을
여러번 전송하더라도 동일한 응답
이 돌아와야 한다는 것을 의미한다.

이에따라 GET은 주로 조회를 할 때에 사용해야한다.

예를들어, 브라우저에서 웹페이지를 보거나, 게시글을 읽는 등
조회하는 행위를 GET으로 요청한다.

POST -> Non-Idempotent

POST는 Non-Idempotent이기 때문에 서버에게 동일한 요청을
여러번 전송해도 응답은 항상 다를수가 있다.

이처럼 POST는 서버의 상태나 데이터를 변경시킬때 사용된다.

게시글을 쓰고, 저장이 되고, 삭제하면 해당 데이터가 없어지는 등
POST로 요청하면 서버의 무언가는 변경되도록 사용된다.

Summary

GET

서버에서 데이터를 가져와서 보여주는 용도일뿐 서버의 값이나 상태를 변경하지 않는다.

POST

서버의 값이나 상태를 변경하기 위해 또는 추가하기 위해서 사용된다.

profile
90% of my problems magically disappeared when I slept well, ate well and went on regular walks

0개의 댓글