
HTTP(하이퍼텍스트 전송 프로토콜)는 웹에서 데이터를 주고받는 데 사용되는 프로토콜입니다. HTTP 메서드는 클라이언트(일반적으로 웹 브라우저)가 서버에게 Request를 보내는 방식을 정의합니다.
각각의 메서드는 특정한 작업을 나타내며, 서버는 이를 기반으로 요청된 동작을 수행합니다. 가장 일반적인 HTTP 메서드에는 다음과 같은 것들이 있습니다.
GET 메서드는 서버로부터 데이터를 요청하는 데 사용되는 메서드입니다. 이 메서드는 주로 정보를 요청하거나 검색하는 데 사용되며, 요청한 데이터는 일반적으로 URL의 일부로 전달됩니다. GET 메서드는 요청 본문을 사용하지 않고, 데이터를 Query String의 형태로 URL에 포함시켜 전송합니다.
GET 메서드의 주요 특징은 다음과 같습니다.
GET은 데이터를 URL에 첨부하여 전송합니다. 이 데이터는 쿼리 문자열의 형태로 전달되며, URL 끝에 "?"를 사용하여 쿼리 문자열을 시작합니다. 각각의 쿼리 매개변수는 &로 구분됩니다. 예를 들면 다음과 같습니다:http://example.com/resource?name=jongpark&id=1234
캐싱: GET 요청은 결과가 캐시될 수 있습니다. 브라우저는 동일한 GET 요청이 여러 번 발생할 때 이를 캐시하고, 이후에 동일한 요청이 있을 때 서버에 재요청하지 않고 캐시된 데이터를 사용할 수 있습니다.
제한된 데이터 전송: GET은 URL의 길이에 제한이 있기 때문에 대량의 데이터를 전송하기에는 적합하지 않습니다. 또한, 보안 상의 이유로 민감한 정보를 URL에 노출시키는 것은 피해야 합니다.
POST 메서드는 클라이언트가 서버로 데이터를 제출(전송)하는 데 사용되는 메서드입니다.
POST는 데이터를 요청 본문(request body)에 담아 서버로 전송하므로, 일반적으로 GET 메서드보다 많은 양의 데이터를 전송할 수 있습니다. POST 요청은 주로 폼 데이터를 서버로 제출하거나, 리소스를 생성 또는 업데이트하기 위해 사용됩니다.
POST 메서드의 주요 특징은 다음과 같습니다:
데이터 전송: POST 요청은 요청 본문에 데이터를 담아 서버로 전송합니다. 이를 통해 GET 메서드보다 큰 양의 데이터를 전송할 수 있으며, 데이터는 일반적으로 FormData, JSON, XML 등의 형식으로 전송됩니다.
Request Body 사용: POST 요청은 데이터를 body에 포함시키기 때문에, URL에는 데이터가 노출되지 않습니다. 이는 민감한 정보나 대량의 데이터를 안전하게 전송하는 데 유용합니다.
높은 데이터 크기 상한: POST는 HTTP 헤더의 Content-Length를 통해 전송되는 데이터의 길이를 명시적으로 지정할 수 있어서, GET 메서드보다 더 큰 데이터 양을 전송할 수 있습니다.
PUT 메서드는 클라이언트가 서버에게 리소스를 생성하거나 업데이트하도록 요청하는 데 사용되는 메서드입니다. PUT은 주로 리소스의 전체 업데이트에 활용되며, 요청 본문에 업데이트할 데이터를 담아 전송합니다.
PUT과 POST의 가장 큰 차이점은 멱등성입니다. PUT은 멱등성을 가지지만 POST는 멱등성을 가지지 않습니다. PUT은 한 번을 보내도, 여러 번을 연속으로 보내도 같은 효과를 보입니다. 즉, 부수 효과가 없습니다.
PUT 메서드의 주요 특징은 다음과 같습니다:
리소스의 생성 또는 업데이트: PUT은 리소스를 생성하거나 업데이트하기 위해 사용됩니다. 만약 지정된 URI에 이미 리소스가 존재하면 해당 리소스를 업데이트하고, 없다면 새로운 리소스를 생성합니다.
전체 업데이트: PUT은 리소스의 전체를 업데이트합니다. 즉, 클라이언트는 업데이트하려는 리소스의 전체 데이터를 요청 본문에 담아 서버에게 전송합니다.
Request Body 사용: PUT 요청은 POST와 마찬가지로 요청 본문에 업데이트할 데이터를 담아 전송합니다. 이를 통해 클라이언트는 서버에게 업데이트할 데이터를 안전하게 전송할 수 있습니다.
DELETE 메서드는 클라이언트가 서버에서 특정 리소스를 삭제하도록 요청하는 데 사용되는 메서드입니다. DELETE 요청을 통해 클라이언트는 지정된 URI의 리소스를 서버에서 삭제하라고 명시적으로 요청합니다.
DELETE 메서드를 사용할 때는 신중해야 합니다. 리소스를 완전히 삭제하므로, 해당 리소스에 대한 모든 참조가 끊어지고 더 이상 복구할 수 없게 됩니다. 따라서 DELETE 메서드를 사용할 때는 해당 작업의 영향을 신중히 고려해야 합니다.
DELETE 메서드의 주요 특징은 다음과 같습니다:
리소스 삭제: DELETE는 특정 URI에 위치한 리소스를 삭제합니다. 이는 해당 리소스를 서버에서 완전히 제거하고, 더 이상 해당 리소스에 접근할 수 없도록 만듭니다.
Idempotent: DELETE 메서드는 Idempotent한 특성을 가지고 있습니다. 이는 동일한 요청을 여러 번 전송해도 리소스의 상태가 항상 동일하게 유지된다는 것을 의미합니다. 여러 번 DELETE 메서드를 호출하더라도 해당 리소스는 이미 삭제된 상태일 것입니다.
Request Body의 불필요성: DELETE 메서드는 일반적으로 요청 본문을 필요로하지 않습니다. 삭제할 리소스를 식별하는 URI가 요청에 포함되어 있으면 충분합니다.