一、目的
为了能够将测试工具部署成RESTful-API服务,这样就能通过接口的方式提供统一测试工具服务,使用人员就不用构建application而产生的各种环境问题、使用问题。
适合人群:Python开发、Flask框架使用、REST风格web架构
二、介绍
Flask:Python web开发轻量框架,自由添加需要的扩展(Django于此相反)
Flask核心特性:
- 轻量级,提供插件接口
- 封装了request对象
- 拥有蓝图功能
- flash,在C端警告提示用户
- 模板支持宏
REST特点(约束[constraint]):
- 客户端-服务端 Client-Server CS
- 无状态 Stateless S
- 缓存 Cache $
- 统一接口 Uniform-interface U
- 系统分层 Layered L
- 按需代码 Code on Demand COD
REST核心概念:资源就是一切
REST架构API中使用的HTTP请求方法:
- GET 获取目标资源
- POST 创建新资源
- PUT 修改资源
- DELETE 删除资源
REST中资源的格式:json(首推)、xml
REST中版本管理方式:在URL加入版本号
三、REST-API of Flask
1,怎么将REST-API做成application的独立子集?
答:使用Flask的蓝图功能。
2,404和500状态码,是由FLask自己生成的,而且是返回HTML响应,如何让其返回json响应?
答:使用内容协商技术。(在错误处理程序中根据客户端请求的格式改写response.)
3,怎么认证用户,未经授权的用户,不能访问API?
答:因为REST是基于HTTP协议,所以发送密令最佳方式使用HTTP认证,用户密令包含在请求的Authorization首部中。FLask-HTTPAuth扩展,可以把协议的细节隐藏在修饰器中,因为认证只是在API蓝图中使用,所以初始化也在蓝图中。登录名和密码使用User模型中的方法验证。登录密令正确就返回True,失败就False,通过的认证的用户保存在FLask的全局对象g中,这样view函数就能访问。
4,API是需要认证才能访问,使用什么技术可以保护所有API?
答:使用Flask装饰器钩子before_request和FLask-HTTPAuth扩展的login_required装饰器,来对处理函数做修饰,这样API蓝图只用的所有API都会进行自动认证。在处理函数中“拒绝已通过认证但没有确认账户的有用户”
5,怎么对用户访问API限制时间,过期不能访问API?
答:itsdangerous库的TimedJSONWebSignatureSerializer生成token,token可以设置有效期