GET과 POST는 각각 영단어 의미 그대로 ‘가져 온다’와 ‘보낸다’라는 이미지를 갖고 접근하면 좋습니다.
URL의 일부분에 매개 변수(parameter)를 지정하여, Client가 Server에게 어떠한 리소스로부터 정보를 요청
쿼리 스트링(query string)
이라 한다.?
를 붙여 사용하며, 여러 개일 경우 &
를 붙임0:8000/films?genre=드라마&sort=random
Client가 Server에게 어떠한 리소스의 생성 혹은 업데이트를 목적으로 데이터를 보냄
GET | POST | |
---|---|---|
body 값 유무 | 존재 하지 않음 | 존재함 |
뒤로가기 / 새로고침 | 영향 없음 | 데이터가 다시 전송됨 |
캐시 가능 여부 | 가능 | 불가능 |
북마크 가능 여부 | 가능 | 불가능 |
브라우저 히스토리에 매개변수의 저장 여부 | 남아 있음 | 저장 되지 않음 |
데이터 길이 제한 | URL에 데이터를 더하는데, URL의 길이는 최대 2048 글자 | 없음 |
자료형에 대한 제한 | 오직 아스키 문자 | 없음. 이진 데이터(binary data)도 가능 |
보안 | 비교적 보안이 약함(전송되는 데이터가 URL의 일부이기 때문) | 비교적 보안이 강함 |
가시성(visibility) | URL의 모든 사용자가 볼 수 있음 | URL에 보여지지 않음 |
멱등성(impotence) | 멱등적, 여러 번 적용해도 결과가 같음 | 멱등적이지 않음, 여러 번 적용하면 결과가 같지 않음 |
예시 | 특정 제품의 상세페이지를 보여주기 위한 요청 | ‘좋아요’ 버튼을 눌렀을 때 요청 |
거듭해도[冪] 똑같다[等].
연산을 여러 번 적용하더라도 결괏값이 달라지지 않는 일.