在REST API中更改用户的密码

时间:2017-09-12 16:17:41

标签: rest api

我正在开发一个小型REST API。我的数据库中有这个字段的用户资源:

{
  email: String,
  password: String,
  first_name: String,
  last_name: String,
  age: Number,
  location: String
}

当我查询特定用户资源时,出于安全原因,我将返回除password字段之外的所有字段。

现在我想在客户端制作一个表单,以便用户可以更新他的个人信息和密码。更改密码表单将包含两个输入:old_passwordnew_password

这是我的怀疑。我想要一个PUT方法,这样我就可以发送所有字段并更新用户。但old_passwordnew_password很少被填充,因此每次用户发出PUT请求时都无法将其发送到服务器。

  • 将两个字段有时发送到PUT方法是否可以?是RESTful吗?

  • 其他想法是使用具有该两个字段的PATCH方法并仅更新用户密码。但是我的PUT方法没有更新用户密码,而且没有正确使用它?

哪种方法最RESTful? 感谢。

2 个答案:

答案 0 :(得分:1)

是,您可以在值不存在时设置默认值,或者使用服务器上的标志来检查该值是否存在。但是......,PUT必须向资源提供完整的对象。这样做的主要原因是PUT应该是幂等的。这意味着重复的请求应评估服务器上的相同结果。如果您允许部分更新,则不再具有同等效力。

使用PATCH方法可以部分更新结构。它提交对资源的部分修改。如果只需要为资源更新一个字段,则可能需要使用PATCH方法。

答案 1 :(得分:0)

我们解决了这个问题,创造了一个'密码'资源。此资源的URL可能如下所示:

/users/x/password

仅支持PUT。任何其他请求都会导致405错误。