REST API在一个ID有多个记录的记录中更新和电子邮件地址



这个sql查询的等效REST方法和请求是什么?

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"
}

注意:account_number不是主密钥id

如果要更新现有记录,应使用PATCH而不是POST。

参考:

RESTful API设计-PUT与PATCH

REST–PUT与POST

RESTful API设计:13个最佳实践,让您的用户满意

这个sql查询的等效REST方法和请求是什么?

你会如何在网页上做到这一点?您可以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

当列表比http标头大得多,并且编辑相对于列表的大小很小时,PATCH很方便。

GET /emailAddresses
(make the edit in your local copy)
PATCH /emailAddresses

但是,请注意,对于PUT和PATCH,您需要弄清楚如何从请求体中提取已更改的内容,并计算要使用的正确SQL更新查询。如果新的表示中没有"旧"电子邮件地址,那么获取匹配的电子邮件地址可能会很痛苦。

您可以通过使用定制的补丁文档表示来简化这一点,但这限制了可以使用API的通用客户的范围。

最新更新