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