GET Method
- 주로 데이터 조회시 사용
- GET 요청 성공시 JSON이나 XML 데이터와 함께 200(OK) HTTP 응답코드 리턴
- 에러 발생시 주로 404(Not found), 400(Bad Request) 발생
- Idempotent(같은 요청을 여러번 하더라도 결과가 매번 동일)
- 데이터의 변형이 없는 안전한 경우에만 사용
- GET 요청에 필요한 데이터를 URL(Query String)에 포함
(URL에 붙이므로 HTTP 패킷 Header에 포함,
Body는 빈 상태 -> Content-Type이라는 헤더필드 들어가지 않음)
- 데이터를 보내는 양에 한계가 있다.
POST Method
- 주로 새로운 리소스 생성/변경시 사용
- POST 요청 성공시 201(Created) HTTP 응답코드 리턴
- Non-idempotent
(같은 POST 요청을 여러번 전송해도 응답은 항상 다를 수 있다.)
- POST 요청에 필요한 데이터를 Body에 포함
(Body의 데이터를 설명하는 Content-Type 헤더필드 반드시 포함)
GET POST 비교
| GET | POST |
---|
History 기록 | 파라미터들이 URL의 일부->브라우저 히스토리에 남는다. | 파라미터가 브라우저 히스토리에 저장X |
북마크 | 파라미터들이 URL로 인코딩되므로 북마크 가능 | 파라미터 request body에 포함 -> 북마크 불가능 |
Data Type 제한 | ASCII characters만 허용 | 제한X |
Data 길이 제한 | 안전한 URL 길이는 2048 characters | 제한X |
캐시 | idempotent하기 때문에 캐시O | idempotent하지 않기 때문에 캐시X |
POST 방식이 GET 방식보다 보안에 좋다?
GET과 POST 모두 보내는 데이터를 클라이언트 측에서 볼 수 있음
GET방식이 URL로 표현되어 노력없이 볼 수 있다는 차이뿐
보안을 생각하면 두 방식보두 암호화가 필요하다
GET 방식이 POST 방식보다 빠르다.
GET방식의 요청은 캐싱(한번 접근 후 또 요청할 시 빠르게 접근하기 위한 데이터 저장)을 하기때문에 빠르다