Информация об изменениях

Сообщение Re[2]: WebAPI - защита от дублирования - ваш выбор от 01.09.2022 13:59

Изменено 01.09.2022 14:10 Aquilaware

Re[2]: WebAPI - защита от дублирования - ваш выбор
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>0. Сделать метод идемпотентным (грубо говоря, заменить POST на PUT)


При наличии сетевого соединения между клиентом и сервером никакой метод не может быть идемпотентным просто так, потому что клиент никогда гарантированно не узнает, смог ли выполнится метод на сервере или нет. Это может произойти при возникновении ошибки такого соединения, где-нибудь посередине вызова метода сервера. Запрос дошел до сервера? Сервер смог обработать запрос? Клиент уже никогда этого не сможет узнать, следовательно проблема создания повторного запроса (и таким образом заказа) остаётся. Кроме случая когда клиент передает идентификатор. Возвращаемся к тому же GUID'а и подобному.

А какой метод для этого будет использоваться POST или PUT, это просто абстрактное соглашение.

Если подсумировать общие наблюдения, то для решения проблемы дубликатов это может PUT + идентификатор.
Re[2]: WebAPI - защита от дублирования - ваш выбор
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>0. Сделать метод идемпотентным (грубо говоря, заменить POST на PUT)


При наличии сетевого соединения между клиентом и сервером никакой метод не может быть идемпотентным просто так, потому что клиент никогда гарантированно не узнает, смог ли выполнится метод на сервере или нет. Это может произойти при возникновении ошибки такого соединения, где-нибудь посередине вызова метода сервера. Запрос дошел до сервера? Сервер смог обработать запрос? Клиент уже никогда этого не сможет узнать, следовательно проблема создания повторного запроса (и таким образом заказа) остаётся. Кроме случая когда клиент передает идентификатор. Возвращаемся к тому же GUID'а и подобному.

А какой метод для этого будет использоваться POST или PUT, это просто абстрактное соглашение.

Если подсумировать общие наблюдения, то использование PUT и идентификатора решит проблему автора в соответствии с общепринятыми соглашениями.