用于验证凭据的REST方法

时间:2015-04-07 17:32:30

标签: rest

我有一个REST API,我想创建一个接受用户名和密码的方法,确保它们有效,并返回用户资源。

这不是为了验证REST API的用户。用户是单独系统的一部分,API管理它们。

哪种方法和网址适用于此?

GET 似乎不是一个好主意,因为它会将密码放在查询字符串中。此外,此方法可能会更新用户的上次登录日期,因此它不是幂等的。

我可以使用 PUT ,但我用它来更新用户。所以我可以PUT到一个不同的URL,但是这个适当的URL是什么?类似/user/credentials之类的内容可能意味着您正在更新凭据,而不是验证凭据。

2 个答案:

答案 0 :(得分:2)

我通常处理此问题的方法是执行POST请求,例如/user/login或仅/login

您基本上是在创建登录尝试,因此POST听起来很合理,就像POST a search request一样。

通过执行此操作,您可以将自己的登录凭据放在POST正文中,因此它们不会在URL中公开。而且您没有更新用户资源,因此您不必使用PUT。

实施例

POST http://example.com/login HTTP/1.1
{
  "username": "Jon Skeet",
  "password": "SOiscool"
}

答案 1 :(得分:1)

POST 这样一个事实,即用户需要“用户资源”来使用“单独的系统”。 POST 是唯一的appropriate when a method isn't idempotent动词。

如果“单独的系统”是用户将登录的唯一可想象的系统,我会选择一个简单的网址,如/user/login。否则,我会为/user/theSeperateSystem/login添加“用户与'单独系统'的关系”的路径段。