HTTP 메소드는 클라이언트가 하고 싶은 처리를 서버에게 전하는 역할을 한다.
메소드는 총 8개가 존재하며 아래와 같다.
참고로 HTTP의 메소드의 역할을 잘 구분하여 사용하는 방식을 'RESTful API'라고 한다.
CRUD란 'Create', 'Read', 'Update', 'Delete'를 의미한다.
그리고 HTTP 메소드에서 GET, POST, PUT, DELETE가 각 CRUD의 역할을 한다.
GET 메소드는 서버의 데이터를 취득할 때 사용하는 메소드이다. 굉장히 자주 이용되는 메소드이며, Web 페이지, 이미지, 영상 등을 취득할 때 사용한다.
아래 예시를 보면 'http://example.com/' 에 요청을 보내게 되고 서버는 지정된 URI에 맞는 데이터를 응답한다.
// 요청 예시
GET /HTTP/1.1
Host: foo.com
요청에 본문 존재: 아니오
성공 응답에 본문 존재: 예
안전함: 예
멱등성: 예
캐시 가능: 예
HTML 양식에서 사용 가능: 예
출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/GET
POST 메소드는 서버로 데이터를 전송하고, 요청 유형은 Content-Type 헤더로 나타낸다.
예를 들어, 벨로그에 새로운 게시글을 올릴 때와 같이 새로운 리소스에 데이터를 만들 때 주로 사용한다. 또한 기존의 데이터를 수정할 때도 사용되기도 하며, 다른 메소드로는 할 수 없는 작업일 때 사용되기도 하는데 대표적인 예가 검색결과를 표시하는 URI를 들 수 있다.
일반적으로는 URI에 검색 키워드를 넣어 GET하는 것이 가능하지만, 키워드가 매우 긴 경우에는 URI를 통해 GET하는 것은 좋지 않다. 이럴 때 POST 메소드를 사용하면 좋다.
// 요청 예시
POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
say=Hi&to=Mom
요청에 본문 존재: 예
성공 응답에 본문 존재: 예
안전함: 아니오
멱등성: 아니오
캐시 가능: 신선도 정보 포함 시
HTML 양식에서 사용 가능: 예
출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/POST
PUT 메소드는 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체할 때 사용한다.
POST 메소드로 가능한 리소스 생성을 PUT 메소드로도 가능한다. 예를 들어, 존재하지 않는 URI에 PUT 요청을 하면 서버는 새로운 리소스를 생성하게 된다.
PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 16
<p>New File</p>
요청에 본문 존재: 예
성공 응답에 본문 존재: 아니오
안전함: 아니오
멱등성: 예
캐시 가능: 아니오
HTML 양식에서 사용 가능: 아니오
출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/PUT
메소드 이름 그대로 DELETE 메소드는 특정 리소스를 삭제하는데 사용된다.
DELETE /file.html HTTP/1.1
요청에 본문 존재: 아니오
성공 응답에 본문 존재: 아니오
안전함: 아니오
멱등성: 예
캐시 가능 아니오
HTML 양식에서 사용 가능 아니오
출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/DELETE