白忠軍 孔廣黔 吳云



摘 要:針對傳統校園二手商品交易的不足,結合高校特定區域的優勢以及RESTful架構風格的特性,提出基于RESTful的校園二手商品交易系統。對系統進行總體架構、功能模塊、數據庫以及RESTfulAPI設計,運用Python語言、ORM技術以及Flask框架,實現了系統的商品發布、商品分類展示、商品搜索、商品交易等主要功能。實際測試與應用結果表明,該系統運行比較穩定,具有較強的擴展性,能夠較好地滿足大學生進行閑置物品交易的需求。
關鍵詞:校園二手商品;RESTful;Python語言;ORM技術;Flask框架
中圖分類號:TP311.5
文獻標志碼:A
0 引言
隨著學生購買能力的提高以及每年升學和畢業,在大學校園里存在著各種各樣的二手物品。這些物品食之無味,棄之可惜,于是出現了校園二手商品買賣,從張貼小廣告到沿路擺攤設點,這種經營方式不但破壞校園的環境衛生,而且不能滿足校園二手商品暢通交易。隨著近年來因特網在高校的迅速普及,加之二手商品交易需求的日益增長,各大高校紛紛建立起自己的二手商品交易平臺,其開發技術由本地服務發展到網絡服務(Web Serv-ice)。
Web Service的本質是通過網絡調用其他網站的資源,與本地服務相比,它具有平臺無關性、跨越防火墻以及編程語言無關性等優勢[1-2]。WebService的兩種主要方式是SOAPc3](英文全稱:Simple Object Access Protocol)和RESTful[4-6](英文全稱:Representational State Transfer),SOAP是一種基于XML的數據交換協議規范;RESTful是一種軟件架構風格,提供了設計原則和約束條件。與SOAP相比,RESTful有三個重要特性[7-8]:一是充分利用HTTP協議本身語義,規范了請求動作的使用;二是暴露資源存在,URI透明地顯示了請求的資源;三是無狀態性,不用考慮上下文以及當前狀態,極大的降低了復雜度。
針對傳統校園二手商品交易的不足,以及RESTful的特性,提出基于RESTful的校園二手商品交易系統,充分利用網絡設備資源,對高校的二手商品交易市場進行系統管理,創建節約型校園。
1 相關技術介紹
本系統基于RESTful API設計風格進行API設計,同時運用Python語言以及ORM、Flask等技術,實現了系統功能。
(1) RESTful API:API是系統前后端交互數據的接口,RESTful API設計風格一般滿足三個約束[9-11]:第一,把網絡上的所有事物抽象成資源,每一個資源都有唯一的資源標識符URI;第二,RESTful使用的是標準的HTTP方法,常用的有四種方法:GET(獲取資源)、POST(新建資源)、PUT(更新資源)、DELETE(刪除資源);第三,系統前后端進行數據傳輸一般采用JSON格式。
(2) Python語言:Python是一種面向對象的解釋型語言,具有豐富和強大的庫,常被稱作膠水語言,它具有免費開源、可移植性、運行速度快等特性[12]。
(3) ORM技術:對象關系映射(ObjectRelation Mapping,簡稱ORM)是指在操縱數據庫表的時候,不需要用復雜的soL語句,而是簡單的操作實體對象的屬性和方法[13-14]。ORM的一個重要目標是提供能兼容眾多數據庫(如soLite、MysoL、 Postgres、 Oracle、 Ms-soL 以及soLServer)的企業級持久性模型。
(4) Flask框架:Flask是一個使用Python語言編寫的輕量級Web應用框架,它使用簡單的核心[15],用extension增加其他功能,比如用Flask-extension加入ORM這個功能。
2 系統設計
2.1 總體架構設計
由于考慮到系統的穩定性、安全性及可維護性等特點,本系統采用分層架構開發,分層架構可以使得層與層之間的耦合度盡可能降低,以保證開發過程中不會相互干擾,提高工作效率。如圖1所示,系統架構分為數據層(Data Layer)和應用層(Application Layer)。
(1)數據層:即系統后端,用MysoL數據庫存儲數據;與數據庫交互采用Python第三方庫SQ—LAlchemy對數據庫進行增刪改查,實現ORM技術;DBmodel是系統創建的所有映射類;后端服務用Python的Web應用框架Flask;后端的單元測試用Python第三方庫Nose,為前端提供可驗證的交付產品。
(2)應用層:即系統前端,采用HTML5和CSS3來實現靜態頁面設計與布局;前端框架用目前很受歡迎的Bootstrap;采用JavaScript和AJAX創建動態頁面效果并且與后端進行數據交互。系統前端文件主要分為頁面文件( pages)和靜態文件( static),其中每個頁面有對應的css樣式和js交互代碼,另外將頁面中的圖片存放于images文件。
系統前后端數據交互通過RESTful API實現,API將前端請求參數通過AJAX對象發送到系統后端,后端根據API中的URI找到處理函數,進行邏輯處理之后將結果以JSON格式返回給前端。
2.2 功能模塊設計
本系統主要實現商品管理和用戶管理兩大功能模塊:
(1)商品管理:商品管理分為商品發布、商品搜索、商品推薦、商品分類展示、訂單處理、購物車等模塊。商品發布模塊可以輸入主題、價格、描述以及上傳多張圖片;商品搜索模塊是通過關鍵詞快速找到用戶所需要的商品;商品推薦模塊是根據用戶的歷史數據把商品個性化推薦給用戶;商品分類展示模塊是在系統主界面,以“最新”、“最熱”和“推薦”三個類別把商品展示給用戶;訂單處理是用戶下單后,進行支付的過程;購物車是用戶暫時選中的商品列表,可以靈活的刪除增加商品,修改商品數量等。