史寶坤 李欣 王淑嫻 樊笑含 張真真 河北農業大學
隨著計算機技術的發展,web開發技術也迅速的發展。它們對開發者以及對編程語言,編程框架的要求越來越高。而Flask作為簡單且易于拓展的web框架,適用于前后端分離的應用程序的 Web 服務器端開發,有利于提高開發者的效率,減少耦合。同時此框架使用Python語言編寫,許多第三方庫可供開發者使用,方便了開發者的學習及開發。
Python 是一個面向對象的腳本語言。它結構簡單,定義清晰易于開發者的學習,閱讀和維護。它有著豐富的類庫,可以嵌入到其他語言中,被稱為膠水語言。其提供了很多關于數據庫的接口,適用于MVC開發模式,提高了開發者開發效率。此外,還具有可移植,可拓展等特性。近幾年, 它逐漸成為主流的編程語言,廣泛應用到web開發中。
在使用Python進行web應用的開發中,要充分利用它的標準庫以及第三方庫。相較于C語言其速度慢。因此,對于某些速度要求很高的程序代碼,應該合理利用其可嵌入性,調用C語言的代碼,提高程序運行速度。
作為一種用Python語言編寫的“微”框架。其依賴 Jinja模板引擎和 Werkzeug工具箱進行工作。進行數據庫操作時,可以根據自己的需要選取合適的數據庫。同時可以使用SQLAlchemy進行對象關系映射,更加高效的進行數據庫的操作。其作為一個輕量級的框架,只提供最基礎的功能,但是可以通過調用類庫進行拓展,使后端業務邏輯層的編寫更加簡單,大大減輕了開發者的負擔,適用于Web API開發。
無論是C/S還是B/S架構,合理的配置好服務器端Flask生產環境極其重要。在進行Web API開發中,我們在一臺安裝了Linux系統服務器上進行了部署。部署可以分成:基礎環境的配置,采取Nginx+Gunicorn的方式部署。
3.1 Python及Flask的安裝
服務器上安裝Python,建議使用python3。然后使用pip install Flask 該服務器上安裝Flask。
3.2 Nginx+Gunicorn的方式部署Flask。
Nginx提供Http代理,反向代理,負載均衡,web緩存等功能,通過修改配置文件來實現。進行反向代理時根據自己的需求設置正則表達式,采取不同的轉發策略。Nginx對請求進行解析判斷,符合哪一個正則表達式,就將請求轉發到哪個服務器中。進行負載均衡時采用加權輪詢方法進行負載均衡設置,設置每個服務器的權重,高效處理客戶端請求。對服務器響應時間,傳輸大小等設置能使服務器更安全效率的運行。
Gunicorn 運行Flask項目服務器中的應用。其可以容納 WSGI應用,提供Flask工作環境的依賴,同時支持多進程運行,提高了并發數。
在基于Flask的Web開發中,后端使用flask處理前端發送的請求,進行控制器邏輯和業務邏輯的開發。 前端可以使用不同的語言調用后端開發的接口,實現前后端分離開發。
4.1 接口目錄文件
DAO:主要完成與數據層相關的工作,如數據庫的創建以及對其增刪改查等操作。
app:主要是一些方法類的實現。在某一個具體的類中使用flask_restful對前端發送的請求進行相關的讀取等操作。使用reqparse進行參數的解析,成功后,調用數據層中方法進行數據的相關操作。最后將數據層中返回的數據進行加工,返回給前端。
server.py:接口的啟動文件。當接收到前端發送的請求時,根據路由規則相應類執行。
logs:接口的日志,記錄了接口運行時產生的狀態,config.py:配置文件,如與數據庫的相關配置等。
4.2 接口測試
在后端程序完成后使用一些軟件對接口的功能進行測試。
本文對Python以及Flask的基本概念進行了研究,介紹了如何基于Flask框架配置服務器環境以及基于Flask的Web API開發。我們發現Flask框架可以簡單方便的進行Web API開發。作為一個輕量級的web架構,Flask可以快速簡單的進行高質量Web的開發,能夠滿足計算機技術日新月異發展的要求。