http://velog.io/write?id=itonse
http://velog.io/login
// body
{
"email": "user@example.com",
"password": "password123"
}
GET은 SELECT 적인 성향을 갖고 있어서 서버에서 데이터를 가져와서 보여주는 용도에 쓰이며 서버의 값이나 상태 등을 변경하지 않는다.
반면에 POST는 서버의 상태를 변경하기 위해서 또는 추가하기 위해서 사용되는데 이는 INSERT 또는 UPDATE 문과 비슷한 역할을 한다.
GET 방식의 요청은 브라우저 캐싱이 가능하다. 이는 브라우저가 한 번 받아온 데이터를 임시 저장소에 저장해두고, 재요청이 발생했을 때 캐시된 데이터를 재사용함으로써 더 빠른 응답 속도를 제공할 수 있다.
반면에 POST 방식은 브라우저 캐싱을 사용하지 않는데, 이는 POST 요청이 서버의 상태를 변경할 수 있는 작업을 수행하기 때문에 각 요청이 고유해야 하고 캐싱이 적절하지 않을 수 있다. 따라서 POST 요청은 매번 서버로부터 새로운 데이터를 받아와야 하며, 이로 인해 GET 방식에 비해 응답 시간이 느릴 수 있다.
| 특징 | GET 방식 | POST 방식 |
|---|---|---|
| URL 형식 | http://velog.io/write?id=itonse | http://velog.io/login |
| 데이터 전달 | URL에 파라미터를 추가하여 데이터 전송 | HTTP 요청 본문(body)을 통해 데이터 전송 |
| 데이터 길이 | URL 길이 제한이 있음 (2,048자 이하) | 본문 크기에 대한 제한이 더 넓음 (최대 2GB) |
| 보안성 | URL에 데이터가 노출되므로 보안성이 낮음 | 요청 본문에 데이터를 숨겨 보낼 수 있어 보안성이 높음 |
| 캐싱 | 브라우저에서 자동으로 캐싱 가능 | 브라우저 캐싱이 일반적으로 사용되지 않음 |
| 사용상황 | 데이터 조회나 사용자가 입력한 정보가 노출되어도 괜찮은 경우 | 데이터 추가, 수정, 삭제 등 서버의 상태를 변경해야 할 때 또는 사용자 정보의 보안이 필요한 경우 |
ref.
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/main/Network
https://mundol-colynn.tistory.com/141