HTTP 메서드는 클라이언트(사용자)가 서버에 요청을 보낼 때 사용하는 방식입니다. 이 메서드를 통해 클라이언트는 서버에서 정보를 조회하거나 데이터를 전송하는 등의 작업을 할 수 있습니다. HTTP 메서드는 서버와 클라이언트 간의 상호작용을 어떻게 할지를 정의합니다.
HTTP 메서드는 클라이언트가 어떤 작업을 서버에게 요청하는지를 명확하게 전달하는 수단입니다. 이를 통해 웹 애플리케이션에서 다양한 데이터 처리 작업이 이루어집니다. 예를 들어, 데이터를 서버로 보내거나, 서버에 있는 데이터를 가져오는 것 등이 가능합니다.
HTTP 메서드는 다양한 종류가 있으며, 각각은 특정한 동작을 정의합니다. HTTP 주요 메서드에는 GET, POST, PUT, DELET, PATCH가 있고 HTTP 기타 메서드에는 HEAD, OPTIONS, TRACE, CONNECT가 있습니다.
GET 메서드는 서버에서 데이터를 조회할 때 사용됩니다. 주로 서버에서 데이터를 가져오고, 서버에 변경 사항을 발생시키지 않습니다. 예를 들어, 웹페이지를 로드할 때 사용됩니다.
GET /users/1 HTTP/1.1
Host: example.com
이 요청은 example.com 서버에서 사용자 ID가 1인 사용자의 데이터를 가져오는 요청입니다.
POST 메서드는 클라이언트에서 서버로 데이터를 보낼 때 사용됩니다. 주로 새로운 리소스를 생성하거나, 서버에 데이터를 추가할 때 사용됩니다.
POST /users HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com"
}
이 요청은 example.com 서버에 새로운 사용자를 추가하는 요청입니다.
PUT 메서드는 서버에서 리소스를 업데이트할 때 사용됩니다. 주어진 데이터로 리소스를 대체하거나, 리소스가 없으면 새로 생성합니다.
PUT /users/1 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "Jane Doe",
"email": "jane@example.com"
}
이 요청은 사용자 ID가 1인 사용자의 데이터를 업데이트하는 요청입니다.
DELETE 메서드는 서버에서 리소스를 삭제할 때 사용됩니다. 주로 데이터베이스에서 특정 데이터를 제거하는 데 사용됩니다.
DELETE /users/1 HTTP/1.1
Host: example.com
이 요청은 example.com 서버에서 사용자 ID가 1인 사용자를 삭제하는 요청입니다.
PATCH 메서드는 리소스의 일부만 업데이트할 때 사용됩니다. PUT과는 달리 전체 리소스를 교체하지 않고, 일부 필드만 변경할 때 사용됩니다.
PATCH /users/1 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"email": "newemail@example.com"
}
이 요청은 사용자 ID가 1인 사용자의 이메일 주소만 업데이트하는 요청입니다.
HEAD 메서드는 GET 메서드와 거의 동일하지만, 응답 본문(body)을 반환하지 않습니다. 주로 리소스의 존재 여부나 상태를 확인하는 데 사용됩니다.
HEAD /users/1 HTTP/1.1
Host: example.com
이 요청은 example.com 서버에 사용자 ID가 1인 사용자가 있는지 확인하는 요청입니다. 응답 본문 없이 헤더 정보만 반환됩니다.
OPTIONS 메서드는 서버가 지원하는 메서드의 종류를 확인할 때 사용됩니다. 특정 리소스에 대해 서버가 허용하는 HTTP 메서드를 조회하는 데 유용합니다.
OPTIONS /users/1 HTTP/1.1
Host: example.com
이 요청은 example.com 서버에서 사용자 ID가 1인 리소스에 대해 지원되는 HTTP 메서드를 확인하는 요청입니다.
TRACE 메서드는 클라이언트와 서버 사이의 경로를 추적하는 데 사용됩니다. 요청이 서버로 전달되는 과정을 확인할 수 있어, 네트워크 문제를 디버깅하는 데 유용합니다.
TRACE /users/1 HTTP/1.1
Host: example.com
이 요청은 example.com 서버로 전달되는 경로를 추적하고, 그 결과를 클라이언트에게 반환합니다.
CONNECT 메서드는 클라이언트가 서버에 터널을 설정하는 데 사용됩니다. 주로 HTTPS와 같은 보안 연결을 만들기 위해 프록시 서버에서 사용됩니다.
CONNECT example.com:443 HTTP/1.1
Host: example.com
이 요청은 클라이언트가 프록시 서버를 통해 example.com과의 HTTPS 연결을 설정하는 요청입니다.
HTTP 메서드는 각각의 성질에 따라 서버의 동작에 영향을 미칩니다. 이 성질들은 애플리케이션의 성능, 안정성, 보안에 중요한 영향을 미치므로 이해하는 것이 매우 중요합니다.
안전한 메서드(Safe Methods)는 서버의 상태를 변경하지 않는 메서드를 의미합니다. 즉, 이 메서드를 여러 번 호출하더라도 서버의 상태나 데이터가 변경되지 않아야 합니다.
GET /users/1 요청을 보낼 경우, 서버는 사용자 정보만 조회할 뿐, 실제 데이터는 변경되지 않습니다.HEAD /users/1 요청은 리소스의 헤더만 반환합니다. 데이터를 변경하지 않고 리소스의 존재 여부를 확인할 수 있습니다.안전성은 서버의 데이터 보존 및 무결성을 유지하는 데 중요한 속성입니다. 안전한 메서드는 로그 조회, 리소스 확인 등 서버의 변경 없이 정보를 확인할 때 사용됩니다.
멱등한 메서드(Idempotent Methods)는 동일한 요청을 여러 번 보내더라도 서버의 상태나 결과가 변하지 않는 메서드를 의미합니다. 즉, 동일한 요청을 반복적으로 보내더라도 서버에서 동일한 결과가 나오게 됩니다.
GET /users/1을 10번 호출하더라도, 서버는 동일한 사용자 정보를 반환하며 상태가 변하지 않습니다.PUT /users/1 요청으로 사용자 정보를 업데이트할 때, 같은 요청을 여러 번 보내더라도 최종 결과는 동일한 사용자 정보로 유지됩니다.DELETE /users/1 요청을 두 번 보냈을 경우, 첫 번째 요청에서 리소스가 삭제되고, 두 번째 요청에서는 더 이상 해당 리소스가 없다는 응답을 받게 됩니다.멱등성은 서버의 안정성을 보장하고, 네트워크 오류로 인한 중복 요청이 발생하더라도 시스템이 일관성을 유지할 수 있도록 합니다.
캐시 가능 메서드(Cacheable Methods)는 클라이언트가 응답을 캐시에 저장할 수 있는 메서드를 의미합니다. 이를 통해 클라이언트는 서버에 불필요한 요청을 보내지 않고, 캐시된 데이터를 활용할 수 있습니다.
GET /users/1 요청을 보낸 후, 클라이언트는 사용자 데이터를 캐시에 저장할 수 있습니다. 이후 동일한 요청을 보낼 경우 서버로 요청을 보내지 않고 캐시된 데이터를 바로 반환할 수 있습니다.캐시 가능성은 네트워크 성능 최적화와 응답 시간 단축에 중요한 요소로, GET과 같은 조회 요청에서 자주 사용됩니다.
HTTP 상태코드는 서버가 클라이언트의 요청에 대한 응답으로 보내는 3자리 숫자 코드입니다. 이를 통해 클라이언트는 요청이 성공적으로 처리되었는지, 오류가 발생했는지, 혹은 추가 작업이 필요한지 알 수 있습니다. 상태 코드는 5가지 범주로 나뉩니다.
상태 코드는 클라이언트와 서버 간의 통신에서 매우 중요한 역할을 하며, 특히 오류 처리와 요청의 성공 여부를 파악하는 데 도움이 됩니다.
1xx 상태 코드는 요청을 처리 중이거나, 클라이언트가 더 많은 정보를 제공해야 한다는 의미를 담고 있습니다.
2xx 상태 코드는 클라이언트의 요청이 성공적으로 처리되었음을 나타냅니다.
GET /users/1 요청이 성공적으로 처리되면, 서버는 사용자 데이터를 반환하고 200 OK 상태 코드를 함께 보냅니다.POST /users 요청으로 새로운 사용자가 생성되면, 서버는 201 Created 상태 코드와 함께 생성된 리소스의 URL을 반환할 수 있습니다.3xx 상태 코드는 클라이언트가 요청한 리소스가 다른 위치로 이동되었거나, 추가 작업이 필요함을 나타냅니다.
301 Moved Permanently 응답을 보내어 클라이언트가 새 URL로 이동할 수 있도록 유도합니다.302 Found 응답을 받아 임시 페이지로 리다이렉트될 수 있습니다.4xx 상태 코드는 클라이언트의 요청에 문제가 있을 때 반환됩니다. 주로 요청의 형식 오류나, 인증 문제 등이 발생할 때 사용됩니다.
POST /users 요청에서 필수 필드를 빠뜨렸을 경우, 서버는 400 Bad Request 상태 코드를 반환할 수 있습니다.401 Unauthorized 응답을 보냅니다.GET /users/999 요청에서 사용자 ID 999번이 존재하지 않으면, 서버는 404 Not Found 상태 코드를 반환합니다.5xx 상태 코드는 서버에서 오류가 발생하여 요청을 처리하지 못했음을 나타냅니다. 클라이언트 측 문제가 아닌 서버 자체의 문제로 인해 발생합니다.
500 Internal Server Error 상태 코드가 반환될 수 있습니다.503 Service Unavailable 상태 코드가 반환됩니다.