一、目的
為了能夠將測試工具部署成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可以設置有效期