REST API - Как обработать необязательный параметр в методе PUT?в чем разница в реализации с помощью метода PATCH - PullRequest
0 голосов
/ 02 марта 2019

Меня немного смущает метод put с необязательным параметром.

Предположим, что режим

Pet {
  name 
  catagory
  tag  (optional)
}

, когда я хочу создать питомца, я могу использовать метод post,tag может быть опущено.когда я хочу обновить питомца, проблема приходит ко мне.Согласно спецификации http, метод PUT обновит сущность, заменив весь ресурс, что означает, что мне нужно передать параметр tag.Если я не передал tag, значение по умолчанию будет пустым, но это приведет к тому, что существующий тег будет переопределен пустым.

Для метода patch он будет обновлять только частичный параметр независимо от того,это необязательно.Это понятно для понимания.

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

1 Ответ

0 голосов
/ 02 марта 2019

Важно понимать, что спецификация HTTP описывает семантику (что означают различные запросы), но не описывает реализацию (как вы это делаете).Это преднамеренно - спецификация в основном говорит, что ваш сервер должен выдавать себя за хранилище ключей / значений, но это не ограничивает способ его реализации.

PUT примерно аналогично сохранениюfile: "здесь массив байтов, сохраните его с помощью этого ключа".В тех случаях, когда ваше хранилище представляет собой файловую систему, вы просто записываете массив байтов на диск.Если ваше хранилище находится в кэш-памяти, вы просто обновляете свою кэшированную копию.

Если в вашем хранилище есть какая-то база данных RDBMS?Затем вам нужно поработать, определить, какие строки в вашей базе данных необходимо изменить, и какие команды нужно отправить в базу данных, чтобы это произошло.

Дело в том, что клиенту все равно- как сервер, вы можете изменить свое базовое хранилище с RDBMS на хранилища документов на файловые системы на что угодно, и это не является делом клиента.

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

Да.В обоих случаях вам необходимо выяснить, как отредактировать ваш ресурс на месте.

PUT может показаться немного легче, поскольку он семантически эквивалентен «удалить старую версию, а затем создать новую версию».,Вам не нужно беспокоиться о слиянии предоставленных данных с состоянием, которое вы уже сохранили.

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