HTTP 요청 메서드 정리
HTTP는 아홉 가지 표준 요청 메서드를 정의하지만 실제 트래픽은 그중 몇 가지만 주로 사용합니다. 이 표는 각 메서드의 역할과 안전·멱등 여부, 성공 호출이 반환하는 상태 코드를 정리한 것입니다.
| 메서드 | 용도 | 안전? | 멱등? | 성공 상태 |
|---|---|---|---|---|
| GET | Retrieve a resource | Yes | Yes | 200 OK |
| HEAD | Retrieve headers only, no body | Yes | Yes | 200 OK |
| POST | Create a resource or trigger an action | No | No | 201 Created |
| PUT | Replace a resource entirely | No | Yes | 200 OK / 204 No Content |
| PATCH | Apply a partial update | No | No | 200 OK |
| DELETE | Remove a resource | No | Yes | 200 OK / 204 No Content |
| OPTIONS | CORS preflight; list allowed methods | Yes | Yes | 204 / 200 OK |
| TRACE | Echo the request back for diagnostics | Yes | Yes | 200 OK |
| CONNECT | Open a tunnel, e.g. HTTPS via a proxy | No | No | 200 OK |
참고
- 안전(safe)은 메서드가 서버 상태를 바꾸지 않는다는 뜻입니다. GET, HEAD, OPTIONS, TRACE만 안전한 메서드입니다.
- 멱등(idempotent)은 여러 번 호출해도 한 번 호출한 것과 결과가 같다는 뜻입니다. PUT, DELETE, GET이 해당하며 POST와 PATCH는 아닙니다.
- 라우트가 메서드를 지원하지 않으면 서버는 405 Method Not Allowed로 응답하며 보통 Allow 헤더를 포함합니다.
자주 묻는 질문
- GET과 POST의 차이는 무엇인가요?
- GET은 부작용 없이 리소스를 조회하며 안전하게 반복할 수 있고 매개변수는 URL에 담깁니다. POST는 무언가를 만들거나 동작을 실행하며 상태를 바꿀 수 있어 무작정 반복하면 안 됩니다.
- HTTP 메서드가 '안전(safe)'하다는 것은 무슨 뜻인가요?
- 안전한 메서드는 서버 상태를 절대 바꾸지 않으므로 부담 없이 호출할 수 있습니다. GET, HEAD, OPTIONS, TRACE가 안전하며 POST, PUT, PATCH, DELETE는 아닙니다.
- PUT과 PATCH의 차이는 무엇인가요?
- PUT은 보낸 내용으로 리소스 전체를 교체하고, PATCH는 선택한 필드만 부분적으로 변경합니다. PUT은 멱등이라 반복해도 결과가 같지만 PATCH는 일반적으로 멱등이 아닙니다.
- HEAD 메서드는 무엇에 쓰나요?
- HEAD는 GET과 같지만 응답 본문을 반환하지 않습니다. 전체 내용을 내려받지 않고 리소스 존재 여부, 크기, 헤더를 확인할 때 유용합니다.