Я всегда предпочел бы сохранить метод PUT идемпотентным. Идемпотентность можно объяснить тем, что сколько раз вы примените определенную «операцию», результат будет таким же, как в первый раз. Поскольку REST - это просто стиль, это зависит от вас, но я всегда буду спрашивать меня, имеет ли смысл сохранять операцию как PUT или POST.
Что делать, если клиент вашей службы нетерпелив и имеет доступ к вашей услуге PUT несколько раз во время обработки первого запроса ?. Вы можете создать двух пользователей. Таким образом, исключение имеет смысл, если идентификатор не существует .
Это может быть 400 или 404, Я не предпочитаю 404 , но предпочитаю 400 по следующим причинам:
1) Это сбивает с толку клиента ваших API, если неверный ресурс или неправильный идентификатор, который они используют.
(Вы всегда можете различить свой ответ об ошибке и предоставить значимую информацию, но все же я не предпочитаю!)
2) Используя 404,
вы говорите пользователю, что проблема может быть постоянной или временной
, например, скажем, что ваша служба неправильно зарегистрирована на сервере обнаружения (eureka) или если происходит сбой, сервер обнаружения будет отправлять 404, пока вы не исправите проблему.
Используя 400,
вы просите пользователя попробовать другой ввод, в данном случае с другим идентификатором. Это постоянно ...
, так как вы сказали, что id - автоинкремент, и клиент не может определить значение, так что пока пользователь не решит проблему, вернувшись назад и запросив у службы POST новый идентификатор запрос "ПЛОХО" и не может быть обработан.