HTTP 메소드는 클라이언트와 서버 사이에 이루어지는 request와 response 데이터를 전송하는 방식으로, 클라이언트가 웹 서버에게 사용자 리퀘스트의 목적이나 종류를 알리는 수단이다. 즉, 서버가 수행해야 할 동작을 지정하여 요청을 보내기 위해 사용한다.
- GET : 리소스를 조회
- PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성
- POST: 요청 데이터 처리, 주로 등록에 사용
- PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
- DELETE : 리소스 삭제
HTTP 메소드는 총 9가지의 종류가 있는데, 그 중 주로 쓰이는 5가지 메소드를 위주로 HTTP 메소드를 공부해보자.
: 리소스 조회 메서드로, 서버에 조회할 Resource를 요청한다.
기타 메소드. HEAD
GET과 동일하지만 서버에서 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환 (즉, 서버에서 Body를 Return 하지 않는다)
- Resource를 받지 않고 오직 찾기만 원할때
- object가 존재할 경우 응답의 상태 코드를 확인할때
- 서버의 응답 헤더를 봄으로써 Resource가 수정 되었는지 확인
: 새로운 리소스를 생성하거나 기존 리소스를 수정하기 위해 서버에 데이터를 보내는 메소드. 즉, 서버에 문서를 쓸 때 사용하는 메소드로, GET과 반대의 역할을 한다.
: 새로운 리소스를 생성하거나 기존 리소스를 수정하기 위해 서버에 데이터를 보내는 메소드. Server에 Input Data를 보내기 위해 사용한다. (HTML form에 많이 사용)
PUT vs. POST
- PUT은 서버의 Resource에 Data를 저장하기 위한 용도
- POST는 서버에 DATA를 보내기 위한 용도
: 기존 리소스의 부분적인 수정을 위한 메소드
PUT 리퀘스트는 데이터를 완전히 대체하는 것이라면, PATCH는 부분 수정을 위한 메소드이다.
{
id: 'kde9889',
name: '김다은',
password: '1234'
}
위와 같은 데이터에서
1. id, name, password 전체를 생성 또는 변경하는데는 PUT을 사용하고,
2. 기존에 있던 데이터에 password만 변경할 때는 PATCH를 사용한다.
: 지정한 리소스를 삭제하는 메소드
TRACE
: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행한다.
Client로 부터 Request Packet이 방화벽, Proxy Server, Gateway등을 거치면서 packet의 변조가 일어날 수 있는데, 이 때 Server에 도달 했을 때의 최종 Packet의 Request Packet을 볼수 있다.
- 즉, Original Data와 서버에 도달했을 때의 비교본 Data를 서버의 응답 Body를 통해 확인 할 수 있다.
- 요청의 최종 수신자는 반드시 송신자에게 200(OK) 응답의 내용(Body)로 수신한 메세지를 반송해야 한다.
- 최초 Client의 요청에는 Body가 포함될수 없다.
OPTIONS
: 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
Target Server의 지원 가능한 method(ex> GET, POST …)를 알아보기 위해 사용한다.
CONNECT
: 대상 자원으로 식별되는 서버에 대한 터널을 설정한다.
요청한 리소스에 대해 양방향 연결을 시작하는 메소드로, SSL을 사용하는 웹사이트(HTTPS)에 접속하는데 사용될 수 있다.
References
1. inpa Dev
2. Codeit 자바스크립트 웹 개발 기본기
3. medium