REST API设计 - 获取所有用户,如何处理私人信息?

时间:2018-05-28 01:05:25

标签: rest api

我正在开发一个REST API,让我有点迷失。我有一个用户模型,我将(盐渍)密码存储在数据库中。

考虑API的消费者: 我希望他们能够获得所有其他用户公共信息(GET / users,/ users /:id),但我希望忘记密码。

但是,例如,如果我想在常规PUT请求中更新登录用户的信息,那么我就不会在PUT请求中发送用户的现有密码 - 因此PUT请求只会进行部分更新用户在其他所有领域。这似乎不太RESTful。 (也许我应该使用PATCH?似乎补丁没有被广泛使用。这有什么原因吗?)

现在我正在考虑使用POST at /users/:id/updatePassword来更新密码,然后使用PUT at /users/:id来更新有关用户的所有其他信息,除了密码,并且无法从API检索用户密码

然而对我来说这感觉......很奇怪。也许不是,但只是想知道是否有人有更好的想法如何设计呢?

由于

1 个答案:

答案 0 :(得分:1)

首先,您不应该存储您的用户密码加密。你应该对它们进行加盐和哈希并存储盐渍密码的哈希值。

用户的数据库模型不必将您在REST API中公开的资源与用户相匹配。当您使用PUT更新用户时,您应该希望资源中的所有字段PUT都是幂等的。

您建议更新密码的方式(使用POST /users/:id/updatePassword完全正常且RESTful。在您的数据库模型中,您可以将密码哈希与用户的其他字段组合在一起,但在您的资源中,您保留他们分开了。

相关问题