- 클라이언트가 서버에게 어떤 행동을 하고 싶은지 알려주는 방식
- GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, TRACE
HTTP Method의 종류
- GET
- 데이터를 가져오겠다
- 읽기 전용 요청
- 서버의 리소스를 가져옴
- URL에 쿼리 파라미터를 붙여서 요청 (
?search=apple)
- 본문(body) 없음
- 안전하고, 브라우저 캐시에 저장 가능
- POST
- 서버에 데이터를 보낼게요
- 리소스 생성 또는 처리 요청
- 요청 본문(body)에 데이터를 담음 (ex. JSON, Form 등)
- 멱등하지 않음 → 같은 요청을 여러 번 보내면 결과가 달라질 수 있음
- PUT
- 리소스를 전체 수정하거나 새로 덮어쓸게요.
- 전체 업데이트 (또는 새로 생성)
- 본문에 보낸 데이터로 리소스를 "대체"함
- 멱등함 → 같은 요청을 여러 번 보내도 결과가 같음
- DELETE
- 리소스를 삭제할게요.
- 서버에서 리소스를 제거
- 멱등함 (같은 DELETE 요청을 여러 번 보내도 서버엔 더 이상 변화 없음)
- PATCH
- 리소스 일부만 수정하겠다.
- 사용자 이름만 바꿀 때
- 게시물 제목만 수정할 때
- 설정 중 하나만 바꿀 때 → 서버에서 부분 수정이 가능할 때 유용
- HEAD
- GET과 같지만, 본문은 안 줘
- 서버의 헤더 정보만 확인할 때 사용 (본문 없음)
- 주로 파일이 있는지, 용량은 얼마나 되는지 확인할 때 사용
- 응답 본문 없음
- OPTIONS
- "이 URL에서는 어떤 메서드가 허용돼?"
- 서버가 지원하는 HTTP 메서드 목록을 알려줌
- **CORS 사전 요청(preflight request)**에서도 사용됨
- 서버는
Allow: GET, POST, OPTIONS 와 같은 응답을 줌
- TRACE
- 내 요청이 서버까지 어떻게 도착했는지 그대로 돌려줘
- 디버깅용 메서드
- 서버는 요청을 그대로 응답으로 반사
- 보안상의 이유로 대부분의 서버에서 비활성화돼 있음 (XSS 악용 가능)
멱등성(Idempotent)
- 같은 요청을 여러 번 보내도 결과가 같아야 함
- ✅ GET, PUT, DELETE, HEAD, OPTIONS, TRACE
- ❌ POST (요청할 때마다 새로 생성 등 다른 결과 가능)
- ❔PATCH (서버 구현에 따라 멱등일 수도, 아닐 수도 있음)