#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 : замена существующего объекта значениями, указанными в запросе
- ИСПРАВЛЕНИЕ: частичное обновление существующего объекта