Кажется, здесь есть немного недоразумений.PUT против POST - это не на самом деле о замене и создании, а о идемпотентности и именовании ресурсов.
PUT - идемпотентная операция.С его помощью вы даете имя ресурса и объект для размещения в качестве содержимого этого ресурса (возможно, с добавлением, генерируемым сервером).Важно отметить, что выполнение операции дважды подряд должно привести к тому же результату, как если бы он был выполнен один раз или 20 раз, для некоторого довольно свободного определения «одно и то же» (оно не обязательно должно быть байт забайт идентичен, но информация, которую предоставил пользователь, должна быть нетронутой).Вы никогда не захотите, чтобы PUT вызвал запуск финансовой транзакции.
POST - неидемпотентная операция.Вам не нужно указывать имя ресурса, который вы хотите создать (и POST не может создать ; при желании он может дублировать ресурсы).POST часто используется для реализации «создания ресурса с новым именем и скажите мне, как оно называется» - отсутствие идемпотентности, подразумеваемое «новым именем», соответствует этому.Там, где создается новый ресурс, отправка обратно локатора для ресурса в заголовке Location - совершенно правильная вещь.
Теперь, если вы занимаетесь политическим положением, клиенты не должны никогда создавать имена ресурсов, затем вы получаете POST, который идеально подходит для создания (хотя теоретически он может делать все что угодно на основе предоставленной сущности), а PUT - как выполнять обновление.Для многих RESTful-приложений это имеет смысл, но не для всех;если модель, представляемая пользователю, представляла собой файловую систему, то предоставление пользователем имени ресурса имеет огромное значение, и PUT становится основной операцией создания (а POST делегируется менее распространенным вещам, таким как создание пустого каталога и т. д.).on; WebDAV еще больше снижает потребность в POST).
Краткое содержание: Не думайте с точки зрения создания / обновления, а скорее с точки зрения того, кто делает имена ресурсов и какиеоперации идемпотентны.PUT на самом деле создает или обновляет, а POST действительно делает все, что не следует повторять, волей-неволей.