개발끄적

HTTP Method (GET, POST, PUT, DELETE, ...)

누구세연 2024. 1. 19. 08:30

HTTP 메서드는 HTTP(Hypertext Transfer Protocol)에서 클라이언트와 서버 간의 통신에서 수행되어야 하는 동작을 정의하는 명령어입니다. 각 메서드는 특정한 의미와 목적을 가지고 있어, 웹 애플리케이션에서 다양한 작업을 수행하는 데 사용됩니다.

RESTful API와 같은 웹 애플리케이션에서 클라이언트 서버 간의 통신을 표준화하는데 도움을 줍니다.

 

일반적으로 널리 사용되는 몇 가지 HTTP 메서드에 대한 설명은 다음과 같습니다.

 

GET

GET은 웹 브라우저나 다른 클라이언트가 서버에게 정보를 요청할 때 사용되는 HTTP 메서드입니다.

간단하게 말하면, 어떤 데이터를 가져오기 위해 사용됩니다.

 

데이터 전송 방식

GET 요청은 데이터를 URL의 쿼리 문자열(query string)을 통해 전송합니다.

GET /api/products?category=electronics&page=1&sort=price_asc

위 예시에서 '/api/products'는 서버에게 정보를 요청하는 리소스 경로입니다.

category, page, sort는 요청 시 함께 보내는 파라미터로 이를 통해 서버는 사용자가 원하는 정보를 제공할 수 있습니다.

 

데이터 길이 제한

GET은 URL을 통해 데이터를 전송하기 때문에 전송할 수 있는 데이터의 길이에 제한이 있습니다.

일반적으로 브라우저들은 URL의 최대 길이를 정해두고, 이를 초과하면 데이터가 잘리거나 요청이 실패할 수 있습니다.

 

보안

GET은 URL에 데이터를 노출시키기 때문에, 민감한 정보(ex: 비밀번호)를 전송하는 데에는 적합하지 않습니다.

브라우저의 주소창에 데이터가 노출되기 때문에, 민감한 정보는 POST와 같은 다른 메서드를 사용하여 전송하는 것이 좋습니다.

 

캐싱

GET 요청은 응답을 캐싱할 수 있습니다.

이는 동일한 GET 요청이 반복되었을 때, 서버로부터 새로운 데이터를 받지 않고 이전에 받은 데이터를 사용할 수 있도록 합니다.

캐싱의 성능 향상을 위해 사용됩니다.

 

POST

POST는 클라이언트에서 서버로 데이터를 전송하여 새로운 리소스를 생성하거나 기존 리소스를 업데이트하는 HTTP 메서드입니다.

간단히 말하면 데이터를 등록하는 작업에 주로 사용됩니다.

 

데이터 전송 방식

POST 요청은 데이터를 HTTP 요청의 본문(body)에 넣어 전송합니다.

이를 통해 GET과는 달리 URL에 노출되지 않고, 더 많은 양의 데이터를 보낼 수 있습니다.

{
  "name": "Seyeon",
  "age": 25,
  "email": "Seyeon@example.com"
}

 

데이터 길이 제한

POST는 HTTP 요청의 본문을 통해 데이터를 전송하므로, GET보다 데이터길이에 제한이 적습니다.

그러나 서버 및 클라이언트에서는 여전히 최대 데이터 크기를 제한할 수 있습니다.

 

보안

POST는 데이터를 URL에 노출시키지 않기 때문에, 민감한 정보를 전송하기에 적합합니다.

예를 들어, 로그인 시에 사용자의 아이디와 비밀번호를 안전하게 전송할 수 있습니다.

 

주의사항

서버는 POST 요청을 받았을 때 적절한 처리를 하기 위해 요청의 내용을 이해하고 해석해야 합니다.

클라이언트가 어떤 작업을 요청하고자 하는지를 명확하게 전달해야 합니다.

 

PUT

클라이언트에서 서버로 데이터를 전송하여 리소스를 생성하거나 업데이트하는 데 사용됩니다.

주로 리소스의 전체 내용을 갱신할 때 사용됩니다.

 

데이터 전송 방식

PUT 요청은 데이터를 HTTP 요청의 본문에 담아 전송합니다.

POST와 마찬가지로 URL에는 노출되지 않고, 보통 JSON 또는 XML 형식과 같은 구조화된 데이터를 전송합니다.

 

데이터 길이 제한

PUT은 POST와 마찬가지로 HTTP 요청의 본문을 통해 데이터를 전송하므로, 전송할 수 있는 데이터의 길이에 제한이 있습니다.

 

보안

POST와 마찬가지로 PUT 역시 데이터를 URL에 노출시키지 않기 때문에 민감한 정보를 전송하는 데에 적합합니다.

HTTPS를 사용하면 데이터를 암호화하여 보안을 강화할 수 있습니다.

 

주의 사항

PUT은 일반적으로 해당 리소스를 전체적으로 갱신하는 용도로 사용됩니다.

그렇기 때문에 클라이언트가 리소스의 일부를 수정하고자 할 때는 PATCH 메서드가 더 적절할 수 있습니다.

그리고 PUT 요청은 멱등성(idmpotence)을 가집니다. 동일한 요청을 여러 번 수행하더라도 한 번과 여러 번의 효과가 동일하게 유지됩니다.

 

 

DELETE

특정 리소스를 삭제하기 위해 서버에 요청하는 데 사용됩니다.

주로 클라이언트가 특정 리소스를 식별하고 삭제하기 위해 활용됩니다.

 

데이터 전송 방식

DELETE 요청은 본문에 데이터를 넣어 전송하지 않고 주로 리소스의 식별자가 URL에 포함되어 전달됩니다.

DELETE /users/123

 

보안

DELETE 메서드는 리소스를 삭제하는 것으로, 신중하게 사용해야 합니다.

적절한 권한과 권한 검사 메커니즘이 구현되어 있어야 합니다.

 

주의 사항

클라이언트는 DELETE 메서드를 사용할 때 해당 리소스가 실제로 삭제될 것임을 이해해야 합니다.

서버는 DELETE 요청을 받았을 때 적절한 처리를 해야 합니다. 이는 데이터의 영구적인 손실을 의미할 수 있으므로 신중한 처리가 필요합니다.

 

DELETE 메서드는 서버에서 특정 리소스를 삭제하고자 할 때 활용되며, 해당 리소스의 URL이 명시적으로 표시되어야 합니다.

 

 

API를 설계할 때 HTTP 메서드의 적절한 사용은 중요합니다. 각 메서드는 특정한 용도와 의미를 가지고 있으며, RESTful API에서는 이러한 메서드를 활용하여 명확하고 일관된 인터페이스를 제공하는 것이 원칙입니다. 그러나 상황에 따라 유연하게 적절한 메서드를 선택하여 사용하는 것이 중요하며, 보안적인 측면과 함께 고려하여 API를 디자인하는 것이 좋습니다.