Sobes.tech
Назад к вопросам
Junior — Middle
48

Каково предназначение HTTP-метода PUT в RESTful API?

Компании, где спрашивали
УралсибУралсиб

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

PUT используют для создания или полной замены ресурса по конкретному URI. Этот метод должен быть идемпотентным: повторный одинаковый запрос не должен менять результат после первого выполнения. Обычно PUT отправляют, когда клиент знает точный адрес ресурса и хочет сохранить его целиком.

Определение:

HTTP-метод PUT предназначен для создания ресурса по заданному URI или полной замены существующего ресурса по этому же URI. В RESTful API PUT обычно означает, что клиент передаёт полное представление объекта, а сервер либо создаёт его, либо перезаписывает существующий. Важное свойство PUT — идемпотентность: несколько одинаковых запросов приводят к одному и тому же состоянию ресурса.

Пример использования:

Допустим, есть профиль пользователя по адресу /users/42. Клиент хочет обновить данные пользователя целиком и отправляет PUT-запрос с новым состоянием ресурса.

PUT /users/42
Content-Type: application/json

{
  "id": 42,
  "name": "Ivan Petrov",
  "email": "ivan.petrov@example.com"
}

Если пользователь с id=42 существует, сервер заменит его данные. Если нет — может создать ресурс по этому URI, если это предусмотрено API.

Пояснение кода:

Код здесь не требуется, потому что пример показывает HTTP-запрос, а не программную реализацию.

Разбор примера по шагам:

  1. Клиент обращается к конкретному URI /users/42.
  2. Метод PUT сообщает, что нужно сохранить ресурс именно по этому адресу.
  3. Тело запроса содержит полное новое состояние пользователя.
  4. Сервер либо обновляет существующую запись, либо создаёт новую, если так устроена логика API.
  5. Если тот же запрос отправить ещё раз, итоговое состояние ресурса не изменится — это и есть идемпотентность.

Ключевые моменты:

  • PUT — это создание или полная замена ресурса по известному URI.
  • Метод идемпотентен: повторный одинаковый запрос не меняет результат.
  • Обычно PUT передаёт полное представление ресурса, а не его часть.
  • Для частичного обновления чаще используют PATCH.
  • В REST важно различать PUT и POST: PUT обычно адресует конкретный ресурс, POST — чаще создаёт ресурс без заранее известного URI.