REST, HTTP-методы Метод PUT предназначен для идемпотентного создания или обновления ресурса если ресурса ещё нет, сервер может создать его по URI, указанному в запросе в отличие от POST, PUT применяется к конкретному URI, тогда как POST создаёт ресурс по правилам сервера возможность создания через PUT определяется конкретным API и сервером существенно, что повторная отправка PUT-запроса не меняет результат после первого выполнения практический пример: создание или обновление конфигурации либо файла по известному пути
Можно ли создать несуществующую сущность с помощью PUT-запроса?
REST, HTTP-методы Метод PUT предназначен для идемпотентного создания или обновления ресурса если ресурса ещё нет, сервер может создать его по URI, указанному в запросе в отличие от POST, PUT применяется к конкретному…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Можно ли создать несуществующую сущность с помощью PUT-запроса?
- REST, HTTP-методы
- Метод PUT предназначен для идемпотентного создания или обновления ресурса
- если ресурса ещё нет, сервер может создать его по URI, указанному в запросе
- в отличие от POST, PUT применяется к конкретному URI, тогда как POST создаёт ресурс по правилам сервера
- возможность создания через PUT определяется конкретным API и сервером
- существенно, что повторная отправка PUT-запроса не меняет результат после первого выполнения
- практический пример: создание или обновление конфигурации либо файла по известному пути
Подробный ответ
Основной ответ
Да. В соответствии со спецификацией HTTP метод PUT допускает создание сущности, если по указанному URI её ещё нет. Он записывает ресурс или полностью заменяет его по конкретному адресу. Когда ресурс отсутствует, сервер может создать его на основе содержимого запроса. В этом заключается отличие PUT от POST: последний обычно применяют для создания ресурса с идентификатором, который генерирует сервер.
Ключевые моменты
- В RESTful API метод PUT является идемпотентным: повторные запросы с одинаковыми данными по одному URI не приводят к дальнейшему изменению состояния сервера. Поэтому его удобно применять для повторяемых операций создания и обновления.
- Если сущности ещё нет, сервер может создать её и ответить кодом 201 Created. Когда ресурс уже существует, PUT обновляет его; типичными ответами в этом случае являются 200 OK и 204 No Content.
- Метод POST, в отличие от PUT, часто используют для создания ресурса без заранее заданного конкретного URL: URI формируется сервером автоматически, например на основе нумерации ID.
Практический контекст
В прикладных системах PUT чаще применяют для обновления ресурса с известным идентификатором. Однако создание через PUT полезно, когда URI задаётся клиентом, например в S3 или отдельных REST API. Такой подход помогает надёжно синхронизировать состояние клиента и сервера без зависимости от генерации ID на стороне сервера.