作者:lizhonglin
github: https://github.com/Leezhonglin/
blog: https://leezhonglin.github.io/
基于flask的restfulAPI项目实现
了解到一段时间的restfulAPI实现,通用面向对象的用户、角色、权限管理的项目案例来阐述是如何实现restfulAPI接口的实现,今天有空来整理一下。
项目中权限是参照标准的RBAC. 来实现,有良好的扩展性。数据库访问、业务层、接口层分离。保障了代码的可扩展性。基于面向对象的思想实现本项目。具体实现见下面介绍。
1、什么是restful?
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。具体详细内容自行百度,并不是本文的重点。
RESTFUL特点包括:
1、每一个URI代表1种资源;
2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
3、通过操作资源的表现形式来操作资源;
4、资源的表现形式是XML或者HTML;
5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
本项目中主要使用的请求类型的定义:
GET: 获取资源信息
POST: 添加资源信息
PUT: 修改资源信息
DELETE: 删除资源信息
2、项目目录结构
3、项目架构图
4、项目数据库设计图
5、项目具体介绍
5.1 项目URi 定义
# 部门管理
'http://{host}:{port}/li-boss/<version>/department',
'http://{host}:{port}/li-boss/<version>/department/<int:dpt_id>'
# 部门人员
'http://{host}:{port}/li-boss/<version>/department/staff/<int:dpt_id>'
# 用户
'http://{host}:{port}/li-boss/<version>/user',
'http://{host}:{port}/li-boss/<version>/user/<int:user_id>',
# 密码
'http://{host}:{port}/li-boss/<version>/user/<int:user_id>/password'
# 基本信息修改
'http://{host}:{port}/li-boss/<version>/user/<int:user_id>/base/info'
# 角色
'http://{host}:{port}/li-boss/<version>/role',
'http://{host}:{port}/li-boss/<version>/role/<int:role_id>'
# 角色权限
'http://{host}:{port}/li-boss/<version>/role/<role_id>/permission'
# 权限
'http://{host}:{port}/li-boss/<version>/permission'
# 用户组
'http://{host}:{port}/li-boss/<version>/user/group',
'http://{host}:{port}/li-boss/<version>/user/group/<int:group_id>'
# 用户组成员
'http://{host}:{port}/li-boss/<version>/user/group/<int:group_id>/staff'
# 获取用户组的角色信息
'http://{host}:{port}/li-boss/<version>/user/group/<int:group_id>/role'
# 登陆
'http://{host}:{port}/li-boss/<version>/login'
5.2 项目请求和响应
本项目支持两种数据请求和响应格式。分别是的JSON
和XML
.如果需要使用XML
请求的话需要在URL后面加上 ?format=xml
.就可以正常的获取到XML
格式的数据。
5.3 请求示例
JSON
这是一个json
请求不需要代token
的时候的示例:
加了验证的需要选择Bearer Token
验证模式。这是一个JSON
需要带token
验证的请求示例:
XML
这是一个XML
请求不需要代token
的时候的示例:
加了验证的需要选择Bearer Token
验证模式。这是一个XML
需要带token
验证的请求示例:
6. 具体代码实现
由于本项目代码内容比较多我就不贴代码到这个位置了。详细代码地址放github上面了。项目地址