gpt4 book ai didi

javascript - 使用 HTTP PATCH - 真实示例

转载 作者:行者123 更新时间:2023-12-03 04:40:28 28 4
gpt4 key购买 nike

我正在尝试弄清楚如何在我的应用程序中实现 HTTP 补丁。我以前从未使用过它。我使用 Express.js 和sequelize (MySQL)。

我看了SO并在互联网上寻找现实生活中的例子,但找不到任何真正有值(value)的东西。这些链接让我更好地理解了 PATCH 是什么,但我仍然没有看到它在我的案例中的好处。这一定是我缺少的东西。

这是我的简化设置:

router:
basePath:
controller: PutUser
method: PUT
path: /user/:userId/

Payload:
{email: 'newemail@hello.com'}

Controller:
Then here I find the user by its id and give the payload. User gets updated

令我困惑的是,如果我要实现一个 PATCH,唯一改变的是路由器,我使用 PATCH 代替。我还使用 userId 来查找用户并更改其电子邮件。我缺少什么?这是应该的样子吗?

最佳答案

你没有错过任何东西。 PUT 和 PATCH 之间的区别更多的是语义上的。该方法本身不会在 HTTP 级别提供太多附加信息/要求。根据RFC5789 ,使用 PUT 或 PATCH 取决于您的服务器端逻辑:

The difference between the PUT and PATCH requests is reflected in theway the server processes the enclosed entity to modify the resourceidentified by the Request-URI.

因此,如果您的 user 资源有很多字段,例如电子邮件、姓名、地址、年龄等,那么如果您只想更改,PATCH 是更好的选择电子邮件。如果您的user资源只有电子邮件字段,或者如果您想重置所有字段信息,那么PUT是更好的选择。

我猜您很困惑,因为这个“更新电子邮件”操作是一个“覆盖”操作,这使得它与 PUT 或 POST 非常相似。不过有一个更合适的例子(伪代码):

PATCH /user/<userId>
Payload:
{
patchField: 'age',
patchOperation: 'X+1'
}

关于javascript - 使用 HTTP PATCH - 真实示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43110651/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com