京东商城 URL 设计是咋实现的

邀请好久了都没时间顾得上回答。
以前在 GrapeCity 实习的时候给测试组做过一个系统:将他们所有对 SpreadJS 的测试脚本整理起来分组展示,用户可以在页面自由选择要对最新代码进行的测试,其中有设计过一个类似题目的 URL 规则。系统服务器上会自动拉取最新代码,其中测试脚本按测试的功能点分目录存放,我们称一个目录为一个组,测试脚本每个文件会有个固定的编号。
我设计的 URL 规则是:在 path 每一节中描述一个组中需要加载的脚本编号,整个 path 的顺序则限定了组间的加载顺序。假设我们的代码目录如下:
group1
1.test-aaa.js
2.test-bbb.js
3.test-ccc.js
gtoup2
1.test-xxx.js
2.test-yyy.js
我使用类似数组下标的方式来指定一个组内的若干个测试脚本:
group1 的 1.test-aaa.js :group1group1 的 1.test-aaa.js 和 2.test-bbb.js :group1或groupgroup1 的所有脚本 :group1其中下标有以下规则:
数字代表测试脚本前的编号(流程能保证连续性和唯一性);多个编号使用逗号,隔开;破折号-表示范围;省略下标则表示整个组的所有脚本;下标声明顺序即是加载顺序,如group1则分别加载1.test-aaa.js,3.test-ccc.js,2.test-bbb.js。组之间的规则使用/分隔,path 也代表了组间的加载顺序:
group1 的 1.test-aaa.js 和 3.test-ccc.js 和 group2 整组 :/group1/group2 【京东商城 URL 设计是咋实现的】 之所以设置一个 URL 规则而不用 POST 或者其他方式来做是因为这个系统需要接入 CI,如果某次提交的代码不能通过自动测试了,自动测试系统能够根据这个规则生成特定的 URL 发送邮件给项目成员,然后他们能够通过这个 URL 就能重现失败的测试结果了。
?
■网友
没有什么规则算法啊。652-830-000.html 是 栏目A652-830-860.html 是栏目A下的子栏目之一。652-830-862.html 是栏目A下的子栏目之一。652-829-000.html 是栏目B652-829-851.html 是栏目B系的子栏目....后面还有“品牌”,“价格”,等等筛选等等等等。。。以前接触这方面的,但是许久没弄,差不多忘光了。记得URL重写就可以实现这样的方式。一般这类商城站点都是伪静态的,静态生成的话,后期有变动麻烦。
■网友
不是专家。 看了一下你发的京东url,其中652-830-860-0-0-0-69132-0-0-0-1-1-1部分应该是一些搜索的参数。 比如说可能某一段参数表示商品种类,或者表示价格区间、品牌、价格、适用范围等的option。 不知道你要什么算法,就是把一些参数连起来,供后台程序使用。 实现方法不难,很多web框架都带有url路由功能,或者自己做url路由也可以,网上一搜一大堆,没必要抄袭京东的规则,根据你们自己的需求来设计url的规则。


    推荐阅读