HTTP GET 메소드, POST 메소드 🔦
HTTP 메소드 중 GET과 POST는 다른 방식으로 작동합니다. 하나의 컨트롤러에 GET과 POST를 같이 묶어버리면 보안을 제대로 신경쓰지 않은 결과물이 탄생하게 됩니다. HTTP 메소드에서도 두개의 메소드를 구분해놓은 만큼 상황에 맞는 메소드를 사용해야 합니다.
GET 특징 ⭐️
HTTP GET 메소드는 서버로로 부터 리소스를 응답받을 때 사용합니다. 메인 페이지를 응답받거나, 게시판의 글을 조회할 때 사용됩니다.
① GET은 cache를 사용할 수 있다
Client가 서버에게 GET 요청을 보내면 웹 캐시가 요청을 가로챌 수 있습니다. 서버로부터 리소스를 새롭게 다운로드하는게 아니라 cache에 저장된 리소스를 바로 응답받을 수 있습니다. HTTP Header에 cache-control에서 캐시 옵션을 지정해 줄 수 있습니다.
② GET 요청은 브라우저 히스토리에 기록됩니다.
③ GET 요청은 길이 제한이 있습니다. 브라우저마다 길이 제한은 다릅니다.
④ GET 요청에서 critical한 정보를 다뤄서는 안됩니다. 파라미터에 정보가 노출되어 버리므로, GET 요청은 public한 정보만을 다뤄야 합니다.
POST 특징 ⭐️
Client가 리소스를 새롭게 생성할 때 사용되는 메소드입니다. 또한 업데이트할 때 도 PUT이나 PATCH 대신 사용하기도 합니다. POST 메소드의 특징은 body를 사용할 수 있다는 점입니다. body에 태워 보내는 정보의 타입은 Content-Type에서 결정할 수 있습니다. 예를 들어 application/json 형식으로 말이죠.
① POST는 길이 제한이 없습니다.
② HTML의 <form> 태그를 통해 메소드를 사용합니다.
③ POST 요청은 cache 되지 않고, 브라우저 히스토리에도 남지 않습니다.
④ body에 태우는 정보를 암호화할 수 있습니다.
GET 🆚 POST
🔨 사용 목적 🔨
GET은 리소스를 조회할 때 사용되며, POST는 리소스를 생성하거나 중요한 정보를 담은 조회를 할 때 사용됩니다.
🔨 멱등성(idempotent) 🔨
멱등이란 연산을 여러번 해도 같은 결과를 반환하는 성질입니다. GET은 멱등이며, POST는 멱등이 아닙니다.
🔨 보안성 🔨
GET 요청은 params나 queryString에 정보가 다 노출됩니다. 하지만 POST의 경우 body에 태워 정보를 요청하고, 이 정보를 암호화 해서 요청할 수 있습니다.
GET | POST | |
cache | 가능 | 불가능 |
Browser History | 가능 | 불가능 |
Bookmark | 가능 | 불가능 |
Data Length Limit | 미존재 | 존재 |
HTTP 응답 코드 | 200(Success) | 201(created) |
사용목적 | 리소스 요청 | 리소스 생성 |
데이터 전달방식 | QueryString | HTTP Body |
멱등성(Idempotent) | O | X |
🚀️ 도움이 되셨다면 구독과 좋아요 부탁드립니다 👍️
'Programming' 카테고리의 다른 글
매개변수(parameter) VS 인수(Argument) 차이점 (0) | 2022.10.15 |
---|---|
Nest.js TypeORM 2.0에서 3.0으로 (0) | 2022.10.14 |
Typescript 인터페이스 타입 차이점? (0) | 2022.10.13 |
객체 지향 프로그래밍이란(OPP) (0) | 2022.10.13 |
브라우저 주소창에 URL을 입력하면 어떻게 될까? (0) | 2022.10.12 |
댓글