Play Framework中route设计很别扭的一点

MUTEX 发布于 2011/07/20 14:28
阅读 1K+
收藏 0

Play Framework中url route设计成大小写敏感,而且URL中的斜线也不能自动判断。比如:

/listProducts 可以正确路由

/listproducts 就不行

为了避免这个问题,还得用正则表达式写成/list[pP]roduct,用起来比较别扭。不知道Play后续版本会不会改掉这个毛病。

加载中
1
红薯
红薯
还是统一一种写法好吧,例如一个地址是 /aaaa ,那么 /Aaaa 就不应该能访问
1
大东哥
大东哥

这个还是跟部署的机器有关的,如果是部署在windows下,windows下本身就不区分大小写的,所以你上面两个路由都可以访问到。

在linux下面就区分大小写,我之前也是在windows下开发,没注意大小写,放到linux下就出问题了。

不过还是统一好点。

1
红薯
红薯

一般很少让用户收入网站某个页面的网站,都是告诉用户:

你进入网站首页,然后点击右上角的XXX,进入后点击XXX按钮,然后就看到XXX了

1
MUTEX
MUTEX

引用来自“东明”的答案

这个还是跟部署的机器有关的,如果是部署在windows下,windows下本身就不区分大小写的,所以你上面两个路由都可以访问到。

在linux下面就区分大小写,我之前也是在windows下开发,没注意大小写,放到linux下就出问题了。

不过还是统一好点。

FYI, Windows 2008R2 不行。
1
Xingjian_Xu
Xingjian_Xu
servlet不也是区分大小写的么,tail slash也不能自动识别
1
ValueError
ValueError

呵呵,我还觉得 url 里面不应该出现大写字母呢,应该统一小写,用减号分隔单词。

1
段体华
段体华

引用来自“无知的T”的答案

呵呵,我还觉得 url 里面不应该出现大写字母呢,应该统一小写,用减号分隔单词。

同意
LinkerLin
LinkerLin
url不要出现大写字母就行了。多简单的事情啊~
0
MUTEX
MUTEX

引用来自“红薯”的答案

还是统一一种写法好吧,例如一个地址是 /aaaa ,那么 /Aaaa 就不应该能访问

依照URL本身的定义应该是大小写不敏感的,Play其实变相约束了用户,导致用户体验下降。在我的例子中,用户必须输入大写的listProducts才能列出网站产品目录,这种细节只有网站程序员才清楚,在企业运营中,这种知识太技术性了,一般是不会得到传播。这样,前端负责运营网站的人员可能并不知道还需要大写P这样的技术细节。这会导致商业运营方面的问题。

举个例说,当用户打电话给网站运营人员,问怎么样才能获得产品列表,运营人员告诉用户说在公司网址后面输入"/listproducts"就可以了。显然,用户此时只能得到404错误,他不会想这是由于没有输入大写P造成的,他只会想这个网站设计得真烂,导致潜在客户的流失。

估计,Play 这么做的原因在于它采用了将URL与Java 函数映射的思路,而Java本身是大小写敏感的,于是URL也顺路变得大小写敏感了。如果Play需要成为商业成熟的产品,标准方面还是让URL的归URL,Java 的归Java,不要搅在一起的好。

0
丁海燕
java 的世界里一般都是大小写敏感的,你看其的框架 struts, spring mvc 莫不如此。而且作为 URL 你必须考虑用户便于输入的时候,你会希望用户进行大小写切换,何不全用小写呢,你也能瞧见很多 URL 连接字符串时是使用 /your-are-welcome 这样的中杠来连接,而不采用下划线,原因也是输入中划线时不用按 shift 键。
0
徐小路
徐小路
我觉得没必要纠结这个,开发时统一URL就可以了,为什么你要在URL中大写呢?
返回顶部
顶部