restful api 设计,认证和授权相关的问题

有几个问题想了解一下,手机打字太麻烦,问题描述可能不太清楚,见谅。

1.restful API 处理请求时的验证和授权流程是怎么样的?

2.以往照着框架写20分钟一个博客教程代码的时候,许多东西放到session 里面,如用户信息,用户浏览信息,购物车等等。现在用restful api设计的时候,如何处理这些问题?

3.正常的mvc架构和restful api各自分开,每个架构维护一套代码,还是共用一套代码呢?

4.日志问题,每个API 请求都要记录吗?

5.restful API 设计的时候,路由嵌套也就是资源嵌套问题有什么规范吗?

阅读 14.2k
7 个回答

你好, 我是@车护宝的研发工程师,对于你的问题我也想表达下我们项目再实施过程的一些经验与看法。

1,2

我们常见的Web应用做身份认证时,基本上都是基于Http本身的无状态的cookie与服务端的session回话机制来处理。 服务端为每一个请求做一次session身份回话(也就是知道你是谁的标签)。

REST API设计使用场景可以分两个方面

1、为你的WEB应用提供服务
2、为你的移动应用提供服务(包括第三方)

当为Web应用提供服务时,你可以使用session回话机制处理你的身份验证问题

当为移动应用提供服务时,建议使用Token授权机制,也就是为你的应用颁发一个令牌,这个令牌用来统计应用的访问信息:IP,连接次数,设置授权时间,同时可以管理这些信息,中断其连接

3

MVC框架与REST API 虽然是两个开发思想,其实是两个不同的概念咯。REST API为面向资源的一种表现形式。MVC是程序开发的一种架构思想。两个不冲突。你可以将你的业务逻辑通过m层或者service层进行封装,然后通过c层展示出去(rest api 资源子地址也可以对应到c层咯)

4

日志其实很有必要啦, 你可以通过框架去配置你的日志,哪些请求可以加日志,哪些不用,这个在调试接口时非常有用,比如支付功能,如果没有日志,真心脑壳痛

5

我分享下我们现在的接口文档,你也可以关注我的Github(Brave-Cheng)上面有很多整理的REST API的一些有效资源。

保持online

使用yii2框架,搞定你上面所有问题。

如果是自己内部调用,直接约定一个验证token就可以了,如果是供外部调用,请参考oauth2.0流程来实现。

认证机制可以采用基于session的认证(内部使用),对外采用basic auth或者oauth

RESTful API 除了认证,可以为每个API添加用户调用的权限限制,使之更灵活

使用yii2框架,搞定你上面所有问题。

  • Q3:如果用YII2的高级模板的话,完全可以公用一套系统啊
  • Q4:我一般只记录严重错误的日志
宣传栏