在REST API中更改用户的密码
我正在开发一个小型RESTAPI。我的数据库中有一个包含以下字段的用户资源:在REST API中更改用户的密码,rest,api,Rest,Api,我正在开发一个小型RESTAPI。我的数据库中有一个包含以下字段的用户资源: { email: String, password: String, first_name: String, last_name: String, age: Number, location: String } 当我查询特定的用户资源时,出于安全原因,我将返回除密码字段之外的所有字段 现在我想在客户端制作一个表单,这样用户就可以更新他的个人信息和密码。更改密码表单将有两个输入:旧密码和新密码
{
email: String,
password: String,
first_name: String,
last_name: String,
age: Number,
location: String
}
当我查询特定的用户资源时,出于安全原因,我将返回除密码
字段之外的所有字段
现在我想在客户端制作一个表单,这样用户就可以更新他的个人信息和密码。更改密码表单将有两个输入:旧密码
和新密码
我的疑问来了。我想有一个PUT方法,这样我就可以发送所有字段并更新用户。但是old_密码
和new_密码
很少被填充,因此不能在用户每次发出PUT请求时将它们发送到服务器
- 有时可以将这两个字段发送到PUT方法吗?它安静吗
- 另一个想法是使用这两个字段的补丁方法,只更新用户密码。但是我的PUT方法没有更新用户密码,并且没有正确使用,对吗
谢谢。是的,当值不存在时,您可以设置默认值,或者使用服务器上的标志检查值是否存在。但是,PUT必须向资源交付完整的对象。这主要是因为PUT应该是幂等的。这意味着在服务器上重复的请求应该得到相同的结果。如果您允许部分更新,它将不再是idem-power
使用面片方法可以部分更新结构。它向资源提交部分修改。如果您只需要更新资源的一个字段,您可能需要使用补丁方法。我们解决了这个问题,我创建了一个“密码”资源。指向此资源的url可能如下所示:
/users/x/password
仅支持
PUT
。任何其他请求都将导致405
错误。但有时您正在更新完整的资源,有时则不更新。这不是休息,对吧?好的。。因此,我需要有两种方法:放置以更新完整的资源和修补以仅更改密码。这是我的主要想法,但在PUT中,您没有发送密码,因此您没有更新完整的资源。可以吗?可以,只要不存在同一用户的多个条目即可。