네트워크. HTTP의 GET과 POST 비교

sanghee·2021년 12월 30일
0

👩‍💻면접 스터디

목록 보기
20/22
post-thumbnail

매주 진행하는 면접스터디에서 아래의 질문들에 대한 정리를 모은 글입니다.
Interview_Question_for_Beginner/Network
https://murphymoon.tistory.com/
[네트워크] get 과 post 의 차이

📌GET

www.example.com/show?name1=value1&name2=value2

GET은 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드이다.

요청을 전송할 때 데이터를 쿼리 스트링에 담는다. 쿼리 스트링이란 URL 주소 끝에 파라미터를 포함해 전송하는 부분을 뜻하며 URL 끝에 물음표(?)를 붙이고 그 다음 변수명=값&변수명=값...형식으로 이어 붙인다. 쿼리 스트링을 통해 데이터가 노출되므로 중요한 데이터를 전송하면 안된다. 헤더를 통해 데이터를 전송하기에 데이터 전송량에 한계가 있다.

GET은 멱등성(같은 요청에 대해서 같은 응답을 받는 성질)을 보장한다. 반복되는 요청의 경우 캐시에 보관하여 서버로 불필요한 요청을 막는다.

📌POST

리소스를 생성하거나 변경한다.

전송할 데이터는 HTTP 메세지의 Body에 담아 전송하다. Body는 큰 데이터를 전송할 수 있어 대용량 데이터 전송에 적합하다. GET과는 다르게 쿼리 스트링으로 정보가 드러나지 않아 보안상 더 우수하나, 암호화되지 않는다면 POST 또한 보안에 취약하다.

헤더의 Context-Type에 요청 데이터의 타입을 표시해줘야 서버에서 처리하기 편리하다.

📌비교 1. 멱등성

멱등성이란 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다. 서버에서의 멱등성이란, 여러 번 요청하더라도 같은 응답을 받는 것을 뜻한다.

GET: 멱등성 O

자원에 대한 요청을 보내기에 서버에 영향을 주지 않으며 멱등성을 보장한다.

멱등성을 보장하는 경우 캐싱할 수 있다는 이점이 있다. 웹 브라우저는 이를 기반으로 캐시 데이터에 요청에 대한 응답을 미리 기록해준다(정적인 자원들인 이미지, html, css, js 등).

POST: 멱등성 X

데이터를 서버에 전송하여 특정 작업을 처리하기에 서버에서의 결과가 POST의 요청마다 달라질 수 있으므로 멱등성을 보장하지 않는다.

📌비교 2. 데이터가 어디에 실리나

GET: Query String

GET은 쿼리 스트링에 데이터가 실리므로 보안에 취약하다.

POST: Body

POST는 Body에 실리기에 외부적으로 데이터가 드러나지 않는다. 하지만 암호화되지 않은 경우 Body를 확인해볼 수 있기에 중요한 데이터는 반드시 암호화해야 한다.

비교 3. 데이터의 양

GET

서버에 자원을 위한 키워드나 경로와 관련된 정보를 전송한다. 예를 들어, 검색어 키워드나 페이지 번호 등이 있다.

POST

서버에서 작업하는데 필요한 데이터들을 보내줘야 하기에 상대적으로 보내는 데이터의 양이 더 많다. 예를 들어, 회원가입시 필요한 아이디, 비빌번호, 이메일, 이름 등이 있다.

profile
👩‍💻

0개의 댓글