PUT или POST HTTP-глагол при вызове конечной точки API, которая выполняет UPDATE и INSERT? - PullRequest
0 голосов
/ 12 сентября 2018

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

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

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

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

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

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

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

0 голосов
/ 12 сентября 2018

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...