POST 메소드는 주로 새로운 리소스를 생성(create)할 때 사용된다.
조금 더 구체적으로 POST는 하위 리소스(부모 리소스의 하위 리소스)들을 생성하는데 사용된다.
성공적으로 creation을 완료하면 201 (Created) HTTP 응답을 반환한다.
POST 요청은 안전하지도 않고 idempotent하지도 않다. 캐시가 되질 않는다는 점은 GET에 비해 보안에 조금 더 안전하다. 그 이유는 파라미터들이 브라우저 히스토리나 서버 로그에 저장되지 않기 때문이다. 비밀번호와 같은 민감한 정보를 전송하는데 사용된다.
다시 말해서 같은 POST 요청을 반복해서 했을 때 항상 같은 결과물이 나오는 것을 보장하지 않는다는 것이다.
그러므로 두 개의 같은 POST 요청을 보내면 같은 정보를 담은 두 개의 다른 resource를 반환할 가능성이 높다.
POST 메소드를 사용하면 form data는 HTTP request의 message body에 나타날 것이다.
GET 메소드는 주로 데이터를 읽거나(Read) 검색(Retrieve)할 때에 사용되는 메소드이다.
만약에 GET요청이 성공적으로 이루어진다면 XML이나 JSON과 함께 200 (Ok) HTTP 응답 코드를 리턴한다.
에러가 발생하면 주로 404 (Not found) 에러나 400 (Bad request) 에러가 발생한다.
HTTP 명세에 의하면 GET 요청은 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않는다.
따라서 이런 이유로 사용하면 안전하다고 간주된다. 즉, 데이터의 변형의 위험없이 사용할 수 있다는 뜻이다.
게다가 GET 요청은 idempotent하다. 즉, 캐시가 된다. 같은 요청을 여러 번 하더라도 변함없이 항상 같은 응답을 받을 수 있다.
그러므로 GET을 데이터를 변경하는 등의 안전하지 않은 연산에 사용하면 안된다.
GET 메소드를 사용하면 모든 form data는 URL로 인코딩되어 action URL에 query string parameters로 전달된다.
'STUDY > Python' 카테고리의 다른 글
QuerySet Method | Aggregate (0) | 2022.11.07 |
---|---|
기술면접 스터디(9월27일 : 관심사 분리 | SOLID 원칙) (0) | 2022.09.27 |
3-way handshake (0) | 2022.09.21 |
HTTP와 HTTPS를 차이점 (0) | 2022.09.21 |
OSI 7계층 (0) | 2022.09.20 |