[Web]GET/POST 메소드 비교

HW·2023년 4월 28일
0

Web

목록 보기
2/7

서론

HTTP 통신 함수, GET과 POST 방식에 대해 알아 보도록 하겠습니다.

본론

GET

서버로부터 정보를 조회하기 위한 메소드

요청할 때 필요한 데이터를 Body에 담지 않고 쿼리스트링을 통해 전송합니다.

예를들어, www.example.com/resources?userId=value1&password=value2와 같은 URL형태로 전송할 수 있습니다.

또한 GET은 요청이 캐시될 수 있어 불필요한 요청을 제한할 수 있습니다.
정적 콘텐츠를 요청하고 나면 브라우저에서는 요청을 캐시해두고,
동일한 요청이 발생할 때 서버로 요청을 보내지 않고 캐시된 데이터를 사용합니다.

POST

서버로의 정보 전송 및 서버 작업 수행

반면, POST는 리소스를 생성/변경하기 위해 설계되었기 때문에
GET과 달리 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송합니다.

HTTP 메세지의 Body는 길이의 제한없이 데이터를 전송할 수 있어 대용량 데이터를 전송할 수 있습니다.

또한 POST로 요청을 보낼 때는 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야 합니다.

데이터 타입을 표시하지 않으면 서버는 내용이나 URL에 포함된 리소스의 확장자명 등으로 데이터 타입을 유추하고,
알 수 없는 경우에는 application/octet-stream으로 처리합니다.

비교

GET(Select)POST(Update)
동일한 요청동일한 응답(멱등성)응답이 동일하지 않음
주 사용조회생성, 수정, 삭제
데이터Header에 포함Body에 포함
URL데이터를 포함 (최대 2048자)데이터 노출 안됨
보안URL에 데이터가 노출SSL을 사용할 때 노출되지 않음
전송속도캐시가 남아있어 전송 빠름캐시가 남지 않아 전송 느림
히스토리브라우저 히스토리에 파라미터가 남음히스토리에 파라미터가 저장되지 않음
CharASCII 캐릭터만 허용Binary Data 허용

결론

GET은 데이터 요청/조회를 할 때, POST는 데이터 생성/변경을 할 때 사용합니다.
GET은 Idempotent하고, POST는 Non-idempotent합니다. 이에 따라 적절한 메소드를 선택하여 사용해야 합니다.

profile
예술융합형 개발자🎥

0개의 댓글