login 的 restful 风格应该是怎么样的?

根据restful:
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。
PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。
DELETE(DELETE):从服务器删除资源。

问题1: login是发生了更新token资源的操作的,那么应该使用patch吗?

问题2:返回{"uid":1,"token":1},url要怎么写呢?

阅读 14.7k
2 个回答

login过程中有资源的。资源名称是会话,翻译成英文就是session,由于restful的会话一般是基于token来处理的。这个好办,新增会话的时候插入一条新token数据到数据库

  • POST sessions 新建会话,也就是登录,如果用户提交的账号密码通过验证,则返回新创建的token
  • DELETE sessions/[token] 删除会话,也就是退出登录
    其他方法不提供

登录

POST /sessions

{
  "username":"admin",
  "password":"password"
}

响应参数:

{
  "token":"xxx",
  "expires_in":时间戳,
  "user_id":1
}

响应状态码
200

退出登录

DELETE /sessions/登录得到的token
响应参数:

响应状态码
204

未尽事宜可以参看我的慕课网课程 Restful实战

你可以认为 login 是创建一个在线的用户。

那么:

  • http method 应该用 POST
  • body 中存放登录需要的凭证

API 是下面这样子:

POST /login
Content-Type application/json
body: { xxx: xxx, ....}

至于服务器那边更新什么资源,那和API本身没有关心,使用 Restful 需要关心的是业务层次的抽象, token的创建/更新/销毁,只是技术的具体实现罢了。

更多的内容可以看看我的文章 Restful API 的设计

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进