在 RESTful API 中更改密码(PATCH 上的服务器验证)
Change password in RESTful API (Server validation on PATCH)
在 RESTful API 中,我在 /users
和 /users/:id
上有用户资源以及他们的用户名、电子邮件地址和密码。
当我想更新用户信息时,我可以很容易地用一些 JSONPatch
数据做 PATCH:/users/:id
。
现在的问题是我不知道如何处理 更改密码 场景 currentPassword
、newPassword
和 [=18] =] 形式。
应该使用什么METHOD(PATCH似乎合适但有问题)以及数据应该以什么方式传输(body/header/...)。
在更广泛的范围内-应该如何处理具有更多验证字段的补丁。
This post 似乎相关但不涵盖这个确切的主题。
而不是PATCH
,部分更新用户资源,你有没有考虑过PUT
替换密码?
您的端点可以是 /users/:id/password
,其中 password 是 user 资源的子资源。您的密码替换请求如下:
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"
}
在深入研究 JSONPatch 之后,我想出了向补丁数据添加 test
操作的方法。
这看起来有点像:
[
{ "op": "test", "path": "/password", "value": "oldPassword" },
{ "op": "replace", "path": "/password", "value": "newPassword" },
{ "op": "test", "path": "/password", "value": "newPasswordConfirm" }
]
使用这个方法有什么问题吗?
在 RESTful API 中,我在 /users
和 /users/:id
上有用户资源以及他们的用户名、电子邮件地址和密码。
当我想更新用户信息时,我可以很容易地用一些 JSONPatch
数据做 PATCH:/users/:id
。
现在的问题是我不知道如何处理 更改密码 场景 currentPassword
、newPassword
和 [=18] =] 形式。
应该使用什么METHOD(PATCH似乎合适但有问题)以及数据应该以什么方式传输(body/header/...)。
在更广泛的范围内-应该如何处理具有更多验证字段的补丁。
This post 似乎相关但不涵盖这个确切的主题。
而不是PATCH
,部分更新用户资源,你有没有考虑过PUT
替换密码?
您的端点可以是 /users/:id/password
,其中 password 是 user 资源的子资源。您的密码替换请求如下:
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"
}
在深入研究 JSONPatch 之后,我想出了向补丁数据添加 test
操作的方法。
这看起来有点像:
[
{ "op": "test", "path": "/password", "value": "oldPassword" },
{ "op": "replace", "path": "/password", "value": "newPassword" },
{ "op": "test", "path": "/password", "value": "newPasswordConfirm" }
]
使用这个方法有什么问题吗?