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