白忠军 孔广黔 吴云
摘 要:针对传统校园二手商品交易的不足,结合高校特定区域的优势以及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)商品管理:商品管理分为商品发布、商品搜索、商品推荐、商品分类展示、订单处理、购物车等模块。商品发布模块可以输入主题、价格、描述以及上传多张图片;商品搜索模块是通过关键词快速找到用户所需要的商品;商品推荐模块是根据用户的历史数据把商品个性化推荐给用户;商品分类展示模块是在系统主界面,以“最新”、“最热”和“推荐”三个类别把商品展示给用户;订单处理是用户下单后,进行支付的过程;购物车是用户暂时选中的商品列表,可以灵活的删除增加商品,修改商品数量等。