클라이언트가 웹서버에게 요청하는 목적 및 그 종류를 알리는 수단 (사용이유)
※ 요청 메소드의 위치 : HTTP 요청 메세지의 첫째줄
HTTP(HyperText Transfer Protocol) : 텍스트 기반의 *통신규약으로 "인터넷에서 데이터를 주고 받을 수 있는 *프로토콜"이다.
* Protocol(통신규약) = 통신관련규약
* 통신규약 : 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메세지를 주고받는 양식과 규칙의 체계
* 프로토콜(Protocol)
: 공통의 데이터 교환 방법 및 순서에 대해 정희한 의사소통 약속, 규약 혹은 규칙
: 컴퓨터와 컴퓨터 사이 또는 한 장치와 다른 장치 사이에서 데이터를 원활히 주고 받기 위해 약속한 여러가지 규약
행동할 동작
을 정의한 지시어 또는 그들의 모음
C.R.U.D : GET(R), POST(C), PUT(U), DELETE(D)
GET, POST 차이점
- 두 메서드 모두 서버에게 무엇인가를 요청할 때 사용하지만 GET 방식은 'URL ? 리소스' 형태로 서버에게 요청한다.
- GET 방식은 간단한 데이터를 빠르게 처리할 수 있는 장점이 있지만 전송할 수 있는 리소스의 크기가 제한된다. 그 이유는 항상 URL를 포함시켜야 하기 때문에 URL 크기만큼의 공간이 사라지기 때문이다. 또한 리소스가 URL에 그대로 노출되기 때문에 보안상으로도 문제가 있다.
- 반면 POST 방식은 HTTP 헤더 뒤에 입력 스트림 형태로 리소스를 전송하는 방식으로 URL과 리소스를 별도로 전송하기 때문에 GET 방식보다 많은 데이터를 전송할 수 있으며, 최소한의 보안 유지에 효과가 있다. 최소한인 이유는 암호화를 하지 않는다면 보안이 거기서 거기이기 때문이다. 단점으로는 같은 리소스 양일 경우 get 방식보다 처리 속도가 느리다.
POST, PUT 차이점
- POST와 PUT 모두 클라이언트 측에서 서버 측에게 리소스를 전송하는 방식이지만
- POST는 보통 INSERT 개념으로 사용되고, PUT은 UPDATE 개념으로 사용된다.
- 또한 POST는 멱등하지 않고 PUT은 멱등하다.
/service/myresource/user/{user}/bicycles/{bicycleId}
PUT, PATCH 차이점
- 두 가지 모두 클라이언트 측에서 요청한 리소스를 갱신할 때 사용하지만 PUT은 해당 리소스의 전체를 교체하는 방식이고, PATCH는 해당 리소스의 일부를 변경하는 방식이다.
- 또한, PUT은 멱등하지만 PATCH는 멱등하지 않다.
- PUT은 전체 내용을 업데이트하기 때문에 동일한 리소스에 대해 동일하게 PUT을 처리하는 경우 멱등하게 처리된다.
- 반면 PATCH는 내용의 일부가 변경되기 때문에 멱등성을 보장할 수 없다.
멱등성이란 특정 메서드의 요청을 여러번 하더라도 한번 요청했을 때와 결과가 같다면 멱등하다라고 한다.
PUT, DELETE, TRACE 및 GET, HEAD, OPTIONS가 멱등성을 갖는다.
GET
안정성과 멱등성은 신뢰할 수 없는 네트워크 상의 HTTP를 신뢰할 수 있게 만들어준다. 만약, GET요청을 하고 응답을 못 받았을 경우 한 번 더 보내더라도 이 동작은 안전하다.
그러므로 GET은 Idempotent하며 safe하다. 먼저 보낸 요청이 벌써 처리되었다고 하더라도 서버에 다른 영향은 없다.
POST
향후 재사용을 위해 이에 대한 응답을 저장할 수 있음을 나타낸다.
현재 시점의 응답이나 권한 있는 응답에 의존하지 않는 안전한 메서드는 캐시 가능한 것으로 정의한다
읽기 전용인 경우 안전한 메서드로 간주하며, GET, HEAD, OPTIONS 메서드는 안전한 메서드로 정의되어 있다.
즉, 리소스를 수정하지 않는 메소드들을 Safe 하다고 말한다.
일반적으로 사용하는 GET, POST 메소드 이외의 PUT, DELETE, COPY, MOVE 등의 불필요한 메소드를 허용하였을 경우 공격자가 Options를 이용하여 메소드의 종류를 확인한 뒤 웹 서버에 파일 생성, 삭제 및 수정이 가능한 취약점
출처: https://psage.tistory.com/entry/HTTP-Method-제한 [IT Etc...]
참고 사이트
정리를 하고 싶었을 뿐인데... 마인드맵으론 감당이 안 된다..
(정리가 안 됐는데도 이 정도라니.. 너무 방대해ㅜㅜ)