RESTAPI用户管理URI

RESTAPI用户管理URI,rest,mean-stack,Rest,Mean Stack,我正在一个用于用户管理的普通应用程序中编写RESTAPI。虽然我通常遵循RESTAPI的最佳实践,但我确实担心在URI中为用户帐户API暴露太多细节 在尝试访问特定用户帐户资源时,我不希望将用户名或帐户ID作为URI的一部分: /api/accounts/:id or /api/accounts/:username 我遇到的另一种方法是使用“我”而不是资源id: /api/accounts/me 我看到的大多数用例都只使用GET,但我也希望将其用于PUT/POST操作: PUT /api/

我正在一个用于用户管理的普通应用程序中编写RESTAPI。虽然我通常遵循RESTAPI的最佳实践,但我确实担心在URI中为用户帐户API暴露太多细节

在尝试访问特定用户帐户资源时,我不希望将用户名或帐户ID作为URI的一部分:

/api/accounts/:id  or /api/accounts/:username
我遇到的另一种方法是使用“我”而不是资源id:

/api/accounts/me
我看到的大多数用例都只使用GET,但我也希望将其用于PUT/POST操作:

PUT /api/accounts/me/password
{"oldPassword":"xxx", "newPassword":"yyy"}

你认为这是个好办法吗?还有其他想法吗?

像“/me”这样的技巧只适用于当前用户。如果您需要查看其他用户的数据,该怎么办?使用类似于
../me
的功能时,您可能会失去缓存响应的能力,即如果缓存托管在代理上。这可能违反REST原则。当您试图更改特定用户的密码时,您可能仍然需要安全连接。当然,我们也很乐意使用https/ssl,因此实际的URI无论如何只能以明文形式显示给客户端和服务器。像“/me”这样的技巧只适用于当前用户。如果您需要查看其他用户的数据,该怎么办?使用类似于
../me
的功能时,您可能会失去缓存响应的能力,即如果缓存托管在代理上。这可能违反REST原则。当您试图更改特定用户的密码时,您可能仍然需要安全连接。当然,我们也很乐意使用https/ssl,因此实际的URI无论如何只能以明文形式显示给客户端和服务器。