2

在 RESTful API 中,我拥有用户资源,/users/users/:id带有他们的用户名、电子邮件地址和密码。

当我想更新用户信息时,我可以轻松地PATCH:/users/:id使用一些JSONPatch数据。

现在的问题是我无法弄清楚如何使用,和表单来处理更改密码的情况。currentPasswordnewPasswordnewPasswordConfirm

应该使用什么 METHOD(PATCH 似乎合适但有问题)以及应该以什么方式传输数据(body/header/...)。

在更广泛的范围内 - 如何处理带有更多验证字段的补丁。

这篇文章似乎相关,但没有涵盖这个确切的主题。

4

2 回答 2

9

代替PATCH, 部分更新用户资源,您是否考虑PUT过替换密码?

您的端点可能是/users/:id/password,其中密码用户资源的子资源。您更换密码的请求如下:

PUT /users/1/password HTTP/1.1
Host: api.example.com
Content-Length: 113
Content-Type: application/json
Authorization: Basic YWRtaW46c2VjcmV0

{
    "currentPassword" : "secret",
    "newPassword": "othersecret",
    "newPasswordConfirm" : "othersecret"
}
于 2016-04-18T10:04:03.793 回答
1

在深入了解JSONPatch 之后,我能够想出test向补丁数据添加操作的方法。

这可能看起来有点像:

[
    { "op": "test", "path": "/password", "value": "oldPassword" },
    { "op": "replace", "path": "/password", "value": "newPassword" },
    { "op": "test", "path": "/password", "value": "newPasswordConfirm" }
]

使用这种方法有什么问题吗?

于 2016-04-18T11:55:05.797 回答