1

我是 REST 设计的新手,所以我想在这里提供一些指示。

这是我到目前为止所拥有的:

GET    /api/users                 //all users
GET    /api/users/123             //specific
GET    /api/users/me              //get your own profle 
POST   /api/users/me/session      //start new session (login)
DELETE /api/users/me/session      //ends the current session (logout)

我想知道这里的会话/登录/退出的东西。我在这里的想法是正确的,还是应该以其他方式设计成更加 REST'ish?

另外,注册用户呢,应该是:

POST /api/users

即使它也开始一个新的会话?

4

2 回答 2

1

我建议避免使用会话一词并使用身份验证(如身份验证)。术语会话给人的印象是通常与 REST 相悖的服务器端会话。

以下是好的:

GET    /api/users                 //all users
GET    /api/users/123             //specific
GET    /api/users/me              //get your own profile 

对于身份验证,您可能有这个:

POST   /api/auth                  //username/password required. auth_token is sent back
DELETE /api/auth                  //auth_token is sent in HTTP header
于 2013-08-20T08:14:48.713 回答
1

REST 是无状态的,这意味着服务器不需要在连接的应用程序上保持活动状态。引用罗伊菲尔丁的话:

All REST interactions are stateless. That is, each request
contains all of the information necessary for a connector to
understand the request, independent of any requests that may
have preceded it

对用户进行身份验证的一种常见方法是将“秘密”或访问令牌添加到请求的身份验证标头中,您可以使用例如OAuth来实现

此外,当您添加身份验证标头时,无需区分:

GET    /api/users/123             //specific
GET    /api/users/me              //get your own profile 

如果请求的用户的令牌与身份验证标头中的令牌匹配,您可以简单地检查服务器端,因此您返回“我”配置文件。并且POST /api/users确实是一种将用户添加到系统的方法。因此:

GET    /api/users     //all
GET    /api/user/{id} //a user
PUT    /api/user/{id} //update
POST   /api/user      //Add new user
DELETE /api/user/{id} //Remove user
于 2013-08-20T08:16:21.713 回答