Обновление API REST и адрес электронной почты в одной записи, где идентификатор имеет несколько записей - PullRequest
0 голосов
/ 08 апреля 2020

Что такое эквивалентный метод REST и запрос для этого sql запроса?

UPDATE user 
SET email = 'newemail@etc.com' 
WHERE email = 'oldemail@etc.com' 
AND account_number = 1234

Будет ли это

PATCH api/users/1234/oldemail@etc.com
{
    email:"newemail@etc.com"
}

или мне следует создать новый метод, что-то вроде этого?

PATCH api/update-email/1234
{
     oldEmail:"oldemail@etc.com",
     newEmail:"newemail@etc.com"
}

Примечание: номер_счета не является идентификатором первичного ключа

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Каков эквивалентный метод REST и запрос для этого sql запроса?

Как бы вы сделали это на веб-странице? Вы бы отправили данные формы POST.

Например, если вам нужно было

GET /emailAddresses

, а затем вы заметили, что в списке была ошибка, которую вы хотели исправить, вы вероятно, щелкнул бы ссылку «исправить это сообщение», которая загрузила бы новую форму

GET /fixThisEmail?oldEmail=oldemail@example.com

И затем вы заполнили бы адрес замены в форме (в которой исходный адрес был бы предварительно загружен во вход контроль). Поскольку ресурс / emailAddresses представляет собой кэшируемые данные, которые вы хотите изменить, отправка формы, вероятно, будет выглядеть следующим образом:

POST /emailAddresses
Content-Type: application/x-www-form-urlencoded

oldEmail=oldemail@example.com&newEmail=newemail@example.com

Если вместо этого вы захотите использовать идиому удаленной авторизации, вы можете разумно отредактировать свою собственную локальную копию. списка адресов электронной почты, чтобы исправить ошибку, а затем отправить исправленное представление обратно на сервер

GET /emailAddresses

(make the edit in your local copy)

PUT /emailAddresses

PATCH удобно, когда список намного больше, чем заголовки http, и редактирование мало по сравнению с размер списка.

GET /emailAddresses

(make the edit in your local copy)

PATCH /emailAddresses

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

Вы можете сделать это несколько проще, используя сделанное на заказ представление документа патча, но это ограничивает диапазон клиенты общего назначения, которые могут использовать ваш API.

0 голосов
/ 08 апреля 2020

Вы обновляете существующую запись, вы должны использовать PATCH вместо POST.

Refs:

RESTful API Design - PUT vs PATCH

REST - PUT против POST

RESTful API Design: 13 лучших способов сделать ваших пользователей счастливыми

...