Какой http-метод для обновления отдельного свойства

#rest #api

#rest #API

Вопрос:

Я хочу разработать http-маршрут, который устанавливает номер телефона в качестве основного для текущего пользователя, прошедшего проверку подлинности.

не могли бы вы предложить правильный http-метод и маршрут для использования.

Я колеблюсь между получением / auth/phones/{phone_id}/main И ИСПРАВЛЕНИЕМ /auth/phones /{phone_id} с объектом {main: true} в основном тексте запроса.

при установке нового основного телефона старый основной телефон будет автоматически отключен.

Ответ №1:

Предполагая, /auth/phones/{phone_id} что представляет определенный номер телефона пользователя, прошедшего проверку подлинности, я бы сделал следующее:

 PATCH /auth/phones/{phone_id}
Content-Type: application/json

{
    "main":true
}
  

HTTP-метод GET не следует использовать для изменения состояния ресурса.

Комментарии:

1. да, кажется, что PATCH является более правильным методом. Но здесь я не понимаю, зачем указывать маршрут / auth вместо auth / phones /{phone_id}. В некоторых случаях у пользователя может быть коллекция телефонов, каждый телефон с несколькими свойствами (id, user_id, number, main, type (pro, perso), active, …)

2. Извините, я не понял этого, когда читал ваш вопрос. Смотрите мою правку.

Ответ №2:

Согласно Mozilla Foundation, PATCH — это правильный способ применить частичные обновления к записи.

Подробнее читайте в https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH

Ответ №3:

Как правило, вы не хотите изменять данные с помощью метода GET. Варианты, которые вам следует рассмотреть, — это POST / PUT / PATCH. Типичным подходом было бы:

  • СООБЩЕНИЕ: создание нового объекта или подобъекта
  • PUT : замена существующего объекта значениями, указанными в запросе
  • ИСПРАВЛЕНИЕ: частичное обновление существующего объекта