PUT или POST HTTP-глагол при вызове конечной точки API, которая выполняет UPDATE и INSERT?

У меня есть RESTful Web API (написанный на ASP .Net Core 2.1), который получает "журнал изменений" от клиентского приложения-потребителя. Это класс JSON, содержащий все модификации базы данных, которые были выполнены в клиентском приложении, когда оно работало в автономном режиме. Когда клиентское приложение подключается к сети, оно синхронизирует свою базу данных с оперативной / оперативной базой данных, отправляя API все изменения, произошедшие с момента последней синхронизации. Таким образом, он отправляет API набор изменений / журнал изменений с кучей списков UPDATE, INSERT и DELETE для различных таблиц / объектов.

Что касается API, я на самом деле ничего не удаляю из действующей базы данных - я просто отмечаю вещи как удаленные (поэтому я установил для логического поля значение true, т.е. deleted = правда). Технически, API выполняет только INSERTS и UPDATES для базы данных.

Теперь я не согласен с тем, как потребительский клиент должен вызывать эту "синхронизирующую" конечную точку API. Должно ли это называться POST или PUT-запросом? Поскольку API фактически выполняет ОБНОВЛЕНИЯ и ВСТАВКИ... Какой HTTP-глагол является более подходящим? Имеет ли это значение?

2 ответа

Это скорее конвекция, и в соответствии с соглашением у вас есть аргумент в пользу POST, поскольку вы выполняете согласование. Рекомендуется использовать PUT для создания ресурсов или POST для обновления ресурсов.

Следует также учитывать, что оба метода PUT и POST являются небезопасными методами. Однако PUT является идемпотентом, а POST - нет.

Почему бы не использовать использовать PATCH

Из моих закладок - PUT против POST в REST и REST API - PUT против PATCH с примерами из реальной жизни

Я могу рассказать вам мой опыт. Значения глагола в покое ясны и не могут быть неправильно поняты. Но это не охватывает все случаи.

Обычно я использую PUT только для обновления сущности, как определено. Чтобы покрыть все другие гибридные операции, я использую POST.

Таким образом, API PUT честны и чисты, и когда вы сталкиваетесь с POST, лучше копать немного больше!

Другие вопросы по тегам