PUT

HTTP PUT

안전 (Safe)아니오
멱등 (Idempotent)
캐시 가능아니오
요청 본문
응답 본문

개요

PUT은 지정한 URL에 리소스 전체를 통째로 교체(또는 없으면 생성)합니다. 같은 요청을 여러 번 보내도 최종 상태가 같으므로 멱등합니다.

자세히

PUT은 리소스의 '전체 표현'을 보내는 것이 핵심입니다. 일부 필드만 보내면 나머지가 사라질 수 있으므로, 부분 수정은 PATCH를 씁니다. 대상이 없으면 201 Created로 새로 만들고, 기존 것을 바꾸면 200 또는 본문 없는 204 No Content로 응답합니다.

동시 수정 충돌(lost update)을 막으려면 `If-Match: <ETag>` 조건부 요청을 씁니다. ETag가 어긋나면 서버가 412 Precondition Failed로 거부해, 다른 사람이 먼저 바꾼 내용을 덮어쓰는 사고를 방지합니다.

요청 / 응답 예시

요청
PUT /api/users/42 HTTP/1.1
Host: api.example.com
Content-Type: application/json

{ "id": 42, "name": "Ada Lovelace" }
응답
HTTP/1.1 200 OK
Content-Type: application/json

{ "id": 42, "name": "Ada Lovelace" }

코드로 보기

curl -X PUT https://api.example.com/api/users/42 \
  -H 'Content-Type: application/json' \
  -d '{"id":42,"name":"Ada Lovelace"}'
await fetch('/api/users/42', {
  method: 'PUT',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(fullUser)
});

흔한 실수

주로 함께 쓰는 상태코드

관련 메서드

관련 헤더