我正在尝试弄清楚如何在我的应用程序中实现 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 the way the server processes the enclosed entity to modify the resource identified 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/