首先咱们来简单描述下场景,在进行URL地址的设计以及基础概念的巩固加深。
一、需求分析
(1)、当前用户进度“客户管理”模块是,可通过列表方式来查看所有客户。
(2)、可通过“客户名称”关键字进行模糊查询。
(3)、单击客户列表中的“客户名称”连接,可查看客户基本信息。
(4)、单击“新增按钮”,进入“新增客户”界面,可新增客户基本信息。
(5)、单击客户列表中的“编辑”按钮,进入“编辑客户”界面,可更新客户基本信息。
(6)、单击客户列表中的“删除”按钮,可删除当前所选择的客户,需提示是否删除。
由以上信息我们可以得出用户希望我们提供一个“客户管理”模块,其中包含了对客户的新增、修改、删除、查询等功能。(需求分析是一件很复杂的过程,再次不做过多介绍。有兴趣的朋友可以自行查阅资料学习。)
二、设计表结构
customer表结构
字段名 | 数据类型 | 是否为空 | 字段描述 |
pk_id | INT | √ | ID(自增主键) |
name | VARCHAR(255) | √ | 客户名称 |
contact | VARCHAR(255) | √ | 联系人 |
telephone | VARCHAR(255) | — | 电话号码 |
fk_org_id | VARCHAR(255) | — | 部门ID(外键) |
remark | TEXT | — | 备注 |
关于表结构的设计,有如下建议:
- 建议表名与字段名均为小写,若多个 单词可用“下划线”分割,长度控制在15个字节以内;
- 建议每张表都要有唯一的主键字段,且字段名都为pk_id,可使用自增长主键。
- 建议所有的外键表id都以fk+表名+id,区分主外键关系。
- 数据类型尽可能统一,不要出现太多的数据类型
三、设计原型页面
使用Axure软件,我们可以快速的画出原型界面。
还有其他相关界面在此没有一一举例列出,如:查看客户、创建客户、编辑客户等,这些都需要在设计文档中提现出来(个人喜欢叫WBS或需求文档)。
四、设计URL地址
终于到咱们关注的主题了,通过界面质检的跳转与操作,我们可以分析出以下URL
URL | 描述 |
GET:/customer | 进入“客户列表”界面 |
POST:/customer_search | 查询客户 |
GET:/customer_show?id={id} | 进入“查看客户”界面 |
GET:/customer_create | 进入“创建客户”界面 |
POST:/customer_create | 创建客户 |
GET:/customer_edit?id={id} | 进入“编辑客户”界面 |
PUT:/customer_edit?id={id} | 编辑客户 |
DELETE:/customer_delete?id={id} | 删除客户 |
- POST /uri 创建
- DELETE /uri/xxx 删除
- PUT /uri/xxx 更新或创建
- GET /uri/xxx 查看
- GET:操作是安全的。所谓安全是指不管进行多少次操作,资源的状态都不会改变。比如我用GET浏览文章,不管浏览多少次,那篇文章还在那,没有变化。当然,你可能说每浏览一次文章,文章的浏览数就加一,这不也改变了资源的状态么?这并不矛盾,因为这个改变不是GET操作引起的,而是用户自己设定的服务端逻辑造成的。
- PUT、DELETE:操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如我用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有不同,DELETE也是一样。顺便说一句,因为GET操作是安全的,所以它自然也是幂等的。
- POST:操作既不是安全的,也不是幂等的,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建出了若干的资源。
方法 | 是否安全 | 幂等 |
GET | 是 | 是 |
PUT | 否 | 是 |
DELETE | 否 | 是 |
POST | 否 | 否 |
安全和幂等的意义在于:当操作没有达到预期的目标时,我们可以不停的重试,而不会对资源产生副作用。从这个意义上说,POST操作往往是有害的,但很多时候我们还是不得不使用它。(由于这块设计到了uri,今后会在写一篇关于URI、URL、URN之间的区别)
幂等:是一个数学或计算机学概念,常见于抽象代数中。幂等有一下几种定义:
- 对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs(a))。
- 对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即max(x,x) = x。