后端技术规格说明书

1.技术概览

 

开发环境Ubuntu 14.04.2
数据库MySQL
后端开发框架rails 4.0
前后端交互前端用URL发送HTTP请求,后端捕获request,进行路由匹配,返回json格式数据

 

 

 

 

后端在Ubuntu 14.04.2环境上开发,以Ruby On Rails框架搭建,并使用MySQL数据库。

RubyOnRails框架开发有简洁,灵活的特点,提供了一个一站式的很便捷的MVC架构,可以很方便地实现BS架构的软件。ROR通过ActiveModel层,和ActiveRecord层实现与底层数据库的交互,通过ActiveControl层实现了MVC架构的控制层,在我们的设计中,view层在后端中是以API接口(即URL请求)向外展示的,也可以把view层直接看做是前端实现的页面,API实现与view层的交互。ActiveModel和ActiveRecord定义了对象,对象是与数据库中的表进行关联,对于数据库的增删改查的操作被定义为了对象的行为,即rails框架隐藏了底层数据库操作,rails控制器可以直接操作对象实现对于数据库的操作。ruby独特的语言特性和结构极大地便利了代码重用。ruby语言可以很方便地定义代码块,同时rails架构中通过回调函数,过滤器等方式也极大地支持了代码重用。在这些过程中体现了抽象原则,控制耦合,内容耦合,模块化,功能内聚等原则。同时我们通过向外开放API,以及不同层次之间的抽象等实现了信息的隐藏和封装。

后端数据库使用MySQL实现,MySQL支持大型数据库,可以完成对于大量数据的操作,同时,它支持并行操作,并且是开源的免费产品,在现有条件下十分适合我们的程序。它提供了大量数据的处理能力。

前后端交互主要通过API实现。API在这里表现为URL请求。前端发送URL请求,后端rails框架中通过路由对于请求进行解读,匹配相应的控制器,控制器完成前端的请求并返回数据。通过这样的机制我们实现了界面和实现的分离。

后端运行在我们的服务器上,服务器是Ubuntu 14.04.2环境。输入参数设定为URL和http请求,我们通过路由匹配规则完成了对URL的限定。对于请求中数据的限定,我们在control中有专门的处理。我们返回的数据主要是http表单,内容为json格式。

 

 


 

2.实现功能

 

  • 普通用户与社团用户的登录系统
  • 展示社团发布的活动信息
  • 社团编辑并发布自己的活动信息
  • 普通用户报名参加发布的活动,并添加相关备注
  • 社团用户获取参加活动的所有普通用户名单,并对名单中的用户进行删除操作

 

  我们定义了四个实体,用户,社团,文章和备注。用户,社团和文章实体顾名思义,备注实体的主要作用除了体现用户报名中关于报名活动的备注以外,还作为用户报名活动的记录。这些实体抽象为四个对象(和数据库中的四个表)进行相关数据的存储和操作。我们将上述功能抽象到了不同的API接口,通过控制器实现。

 


 

3.API设计

 

  对于上述功能我们设计并实现了以下API,同时设计了相应的路由规则。前端可以通过这些API接口来获取数据和操作。

 

3.1 API功能分类

       

3.1.1 用户登录系统

         

3.1.2 报名

         

3.1.3 活动文章增删改

         

  3.1.4 前端获取文章信息

         

 3.1.5 活动名单

    

3.2 路由搭建

 

HTTP 方法路径控制器#动作作用
POST/api/registerusers#register普通用户注册
POST/api/users/loginusers#login普通用户登录
GET/api/users/logoutusers#logout普通用户登出
POST/api/clubs/loginclubs#login社团用户登录
GET/api/clubs/:uid/articles/:page_idclubs#getabstracts获取社团文章概要
GET/api/clubs/logoutclubs#logout社团用户登出
GET/api/articles/:page_idarticles#abstracts获取文章概要
GET/api/articles/detail/:article_idarticles#detail获取文章详情
POST/api/clubs/articles/detail/createarticles#create创建文章
POST/api/clubs/articles/detail/:article_id/changearticles#show返回文章
POST/api/clubs/articles/detail/:article_id/updatearticles#update编辑文章
POST/api/clubs/articles/detail/:article_id/deletearticles#destroy删除文章
POST/api/clubs/articles/detail/:article_id/listarticles#list获取参与活动名单
POST/api/clubs/articles/detail/:article_id/list/deletearticles#cutlist删除活动名单
POSTapi/users/:uid/articles/:article_id/notes/createnotes#create创建备注(报名)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

4.后端数据库设计

 

  我们对于数据库的设计如下。同时对于每个表单,我们对于几个关键属性设置了索引表,为了便于查询。当数据库中有大量数据的时候,我们对数据库的操作并不会太慢。当数据达到一定程度的时候,我们也可以建立二级索引等。通过这些我们也可以支持对于大量数据的处理能力。

 4.1 数据表

表名属性名类型属性含义
articlesidinteger主键
club_idinteger外键,与club实体建立多对一关联
titlestring文章标题
abstractstring文章摘要
contentstring文章内容
created_atstring表建立时间
updated_atstring表更新时间
usersidinteger主键
stu_numinteger学号
passwordstring密码
phone_numstring(11)学生联系电话
log_numinteger状态验证码
created_atstring表建立时间
updated_atstring表更新时间
clubs   idinteger主键
namestring社团名称
passwordstring社团帐号密码
introductionstring社团介绍
head_urlstring社团头像存储url地址
log_numinteger状态验证码
created_atstring表建立时间
updated_atstring表更新时间
notesidinteger主键
contentstring备注内容
user_idinteger外键,指向users表
article_idinteger外键,指向articles表
created_atstring表建立时间
updated_atstring表更新时间

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.2 E-R图概念模型 

             


 

5.错误处理:

 

  我们的错误处理主要通过两方面实现。

  一方面通过rails自带框架实现。

  rails自带框架中对于请求格式,请求内容等,以及一些错误情况有所判断和区分,对于一些错误rails框架会自主返回错误信息。在http表单的表头中会添上相应的错误码。

  另一方面在代码中有所判断。

  我们在代码中对于边界情况等有所判断。每次对于资源的请求,对于资源的操作,用户持有的权限等,我们都会对于当前情况进行判断, 并在表单中返回错误信息。

 

状态码错误返回错误信息
401普通用户账户信息认证失败Invalid User
401社团用户账户信息认证失败 Invalid club 
404数据表中没有该记录 NoRecord error 
404创建记录失败 New record failed
404更新记录失败 update failed 
404删除记录失败destroy failed

 

 

 

 

 

 

 

 


 

 

6、安全:

 

  安全部分并没有做到足够细化,暂时只考虑了部分数据和过程的安全。主要是通过两种方式实现。

 

  一方面通过rails框架和HTTPS实现部分安全。

  rails框架对于http请求会进行一个简单的身份验证,这个验证是依托浏览器的,浏览器在请求中会自动嵌入一个token,rails在控制器中对于这个token进行验证,实现一个简单的身份验证。

 

  另一方面通过代码设计和存储设计等实现。

  关于用户口令:

  用户口令在后端数据库加上盐值后通过MD5进行哈希之后再进行存储,保证服务器被攻破后用户口令不会泄露。

  关于状态认证:

  用户成功登陆后,后端服务器返回一段哈希值作为token,哈希内容为用户账户信息以及随机选择的随机数。后端保存随机数。用户进行验证的时候,后端对账户信息和随机数进行哈希后再比对,验证用户登录状态。


 

转载于:https://www.cnblogs.com/wowotoubuaa/p/4934565.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值