作者: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上面了。項目地址
自己總計的一些開發經驗,與大家分享,如果覺得有用不忘收藏。