HTTP Method ( GET, POST, PUT, DELETE ) 정리

JongPark·2023년 12월 22일

정리

목록 보기
2/3

HTTP란?

HTTP(하이퍼텍스트 전송 프로토콜)는 웹에서 데이터를 주고받는 데 사용되는 프로토콜입니다. HTTP 메서드는 클라이언트(일반적으로 웹 브라우저)가 서버에게 Request를 보내는 방식을 정의합니다.

각각의 메서드는 특정한 작업을 나타내며, 서버는 이를 기반으로 요청된 동작을 수행합니다. 가장 일반적인 HTTP 메서드에는 다음과 같은 것들이 있습니다.

1. GET

GET 메서드는 서버로부터 데이터를 요청하는 데 사용되는 메서드입니다. 이 메서드는 주로 정보를 요청하거나 검색하는 데 사용되며, 요청한 데이터는 일반적으로 URL의 일부로 전달됩니다. GET 메서드는 요청 본문을 사용하지 않고, 데이터를 Query String의 형태로 URL에 포함시켜 전송합니다.

GET 메서드의 주요 특징은 다음과 같습니다.

  • 데이터 전송: GET은 데이터를 URL에 첨부하여 전송합니다. 이 데이터는 쿼리 문자열의 형태로 전달되며, URL 끝에 "?"를 사용하여 쿼리 문자열을 시작합니다. 각각의 쿼리 매개변수는 &로 구분됩니다. 예를 들면 다음과 같습니다:
http://example.com/resource?name=jongpark&id=1234
  • 캐싱: GET 요청은 결과가 캐시될 수 있습니다. 브라우저는 동일한 GET 요청이 여러 번 발생할 때 이를 캐시하고, 이후에 동일한 요청이 있을 때 서버에 재요청하지 않고 캐시된 데이터를 사용할 수 있습니다.

  • 제한된 데이터 전송: GET은 URL의 길이에 제한이 있기 때문에 대량의 데이터를 전송하기에는 적합하지 않습니다. 또한, 보안 상의 이유로 민감한 정보를 URL에 노출시키는 것은 피해야 합니다.

2. POST

POST 메서드는 클라이언트가 서버로 데이터를 제출(전송)하는 데 사용되는 메서드입니다.

POST는 데이터를 요청 본문(request body)에 담아 서버로 전송하므로, 일반적으로 GET 메서드보다 많은 양의 데이터를 전송할 수 있습니다. POST 요청은 주로 폼 데이터를 서버로 제출하거나, 리소스를 생성 또는 업데이트하기 위해 사용됩니다.

POST 메서드의 주요 특징은 다음과 같습니다:

  • 데이터 전송: POST 요청은 요청 본문에 데이터를 담아 서버로 전송합니다. 이를 통해 GET 메서드보다 큰 양의 데이터를 전송할 수 있으며, 데이터는 일반적으로 FormData, JSON, XML 등의 형식으로 전송됩니다.

  • Request Body 사용: POST 요청은 데이터를 body에 포함시키기 때문에, URL에는 데이터가 노출되지 않습니다. 이는 민감한 정보나 대량의 데이터를 안전하게 전송하는 데 유용합니다.

  • 높은 데이터 크기 상한: POST는 HTTP 헤더의 Content-Length를 통해 전송되는 데이터의 길이를 명시적으로 지정할 수 있어서, GET 메서드보다 더 큰 데이터 양을 전송할 수 있습니다.

3. PUT

PUT 메서드는 클라이언트가 서버에게 리소스를 생성하거나 업데이트하도록 요청하는 데 사용되는 메서드입니다. PUT은 주로 리소스의 전체 업데이트에 활용되며, 요청 본문에 업데이트할 데이터를 담아 전송합니다.

PUTPOST의 가장 큰 차이점은 멱등성입니다. PUT은 멱등성을 가지지만 POST는 멱등성을 가지지 않습니다. PUT은 한 번을 보내도, 여러 번을 연속으로 보내도 같은 효과를 보입니다. 즉, 부수 효과가 없습니다.

PUT 메서드의 주요 특징은 다음과 같습니다:

  • 리소스의 생성 또는 업데이트: PUT은 리소스를 생성하거나 업데이트하기 위해 사용됩니다. 만약 지정된 URI에 이미 리소스가 존재하면 해당 리소스를 업데이트하고, 없다면 새로운 리소스를 생성합니다.

  • 전체 업데이트: PUT은 리소스의 전체를 업데이트합니다. 즉, 클라이언트는 업데이트하려는 리소스의 전체 데이터를 요청 본문에 담아 서버에게 전송합니다.

  • Request Body 사용: PUT 요청은 POST와 마찬가지로 요청 본문에 업데이트할 데이터를 담아 전송합니다. 이를 통해 클라이언트는 서버에게 업데이트할 데이터를 안전하게 전송할 수 있습니다.

4. DELETE

DELETE 메서드는 클라이언트가 서버에서 특정 리소스를 삭제하도록 요청하는 데 사용되는 메서드입니다. DELETE 요청을 통해 클라이언트는 지정된 URI의 리소스를 서버에서 삭제하라고 명시적으로 요청합니다.

DELETE 메서드를 사용할 때는 신중해야 합니다. 리소스를 완전히 삭제하므로, 해당 리소스에 대한 모든 참조가 끊어지고 더 이상 복구할 수 없게 됩니다. 따라서 DELETE 메서드를 사용할 때는 해당 작업의 영향을 신중히 고려해야 합니다.

DELETE 메서드의 주요 특징은 다음과 같습니다:

리소스 삭제: DELETE는 특정 URI에 위치한 리소스를 삭제합니다. 이는 해당 리소스를 서버에서 완전히 제거하고, 더 이상 해당 리소스에 접근할 수 없도록 만듭니다.

Idempotent: DELETE 메서드는 Idempotent한 특성을 가지고 있습니다. 이는 동일한 요청을 여러 번 전송해도 리소스의 상태가 항상 동일하게 유지된다는 것을 의미합니다. 여러 번 DELETE 메서드를 호출하더라도 해당 리소스는 이미 삭제된 상태일 것입니다.

Request Body의 불필요성: DELETE 메서드는 일반적으로 요청 본문을 필요로하지 않습니다. 삭제할 리소스를 식별하는 URI가 요청에 포함되어 있으면 충분합니다.

0개의 댓글