Насколько мне известно, основное различие между методом PUT и POST в REST заключается в том, что запрос POST создаст новую запись, где в качестве запроса PUT будет обновлена существующая запись / будет создана новая запись, если она отсутствует.
Это не правильно. (Это также не ваша вина - это недоразумение распространено ). Реальные различия в семантике POST и PUT в настоящее время описаны в RFC 7231
- POST - более общий метод, который можно использовать для любой операции с целевым ресурсом
- PUT более конкретен - он указывает, что включенный документ предназначен для замены представления на сервере.
Предположим, у нас есть пользователь с Id = 1 и именем = "Pritam" в базе данных. Теперь, если я попытаюсь сделать POST-запрос с телом запроса Id = 1 и name = "Pritam", то что произойдет. (Дубликаты записей). Будет ли создана новая запись или что именно произойдет.
Это детали реализации; это именно то, что REST API изолирует клиента от необходимости понимать (для клиента это просто веб-сайт).
«Правильные» вещи в вашем домене могут быть:
- создайте нового пользователя в модели вашего домена, используя информацию в теле сообщения POST и, возможно, создавая дубликат, или
- сообщить клиенту об ошибке из-за конфликта
- сообщить об успехе клиенту со ссылкой на ранее созданного пользователя
Ничто из этого не происходит по волшебству, вам действительно нужно выбрать то, что имеет смысл для ваших обстоятельств, и реализовать его, а затем выработать правильный способ описания того, что произошло в теле HTTP-ответа, и какую информацию включить в метаданных, чтобы общие компоненты могли разумно участвовать в обмене.