Flask框架搭建REST-API服務

深圳-風塵發表於2019-01-02

一、目的

為了能夠將測試工具部署成RESTful-API服務,這樣就能通過介面的方式提供統一測試工具服務,使用人員就不用構建application而產生的各種環境問題、使用問題。

適合人群:Python開發、Flask框架使用、REST風格web架構

 

二、介紹

FlaskPython 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的藍圖功能。

 

2404500狀態碼,是由FLask自己生成的,而且是返回HTML響應,如何讓其返回json響應?

答:使用內容協商技術。(在錯誤處理程式中根據客戶端請求的格式改寫response.

 

3,怎麼認證使用者,未經授權的使用者,不能訪問API

答:因為REST是基於HTTP協議,所以傳送密令最佳方式使用HTTP認證,使用者密令包含在請求的Authorization首部中。FLask-HTTPAuth擴充套件,可以把協議的細節隱藏在修飾器中,因為認證只是在API藍圖中使用,所以初始化也在藍圖中。登入名和密碼使用User模型中的方法驗證。登入密令正確就返回True,失敗就False,通過的認證的使用者儲存在FLask的全域性物件g中,這樣view函式就能訪問。

 

4API是需要認證才能訪問,使用什麼技術可以保護所有API

答:使用Flask裝飾器鉤子before_requestFLask-HTTPAuth擴充套件的login_required裝飾器,來對處理函式做修飾,這樣API藍圖只用的所有API都會進行自動認證。在處理函式中拒絕已通過認證但沒有確認賬戶的有使用者

 

5,怎麼對使用者訪問API限制時間,過期不能訪問API

答:itsdangerous庫的TimedJSONWebSignatureSerializer生成tokentoken可以設定有效期

 

相關文章