连字符,下划线或camelCase作为URI中的单词分隔符?
我正在为Intranet应用程序devise一个基于HTTP的API。 我意识到在事物的macros伟计划中这是一个非常小的问题,但是: 我应该使用连字符,下划线还是驼峰来分隔URI中的单词?
这是我最初的想法:
骆驼香烟盒
- 如果服务器不区分大小写,可能会出现问题
- 似乎在查询string键( http://api.example.com?searchQuery = …)中有相当广泛的用途,但在其他URI部分
连字符号
- 比其他select更美观
- 似乎被广泛用于URI的path部分
- 从来没有在野外看到连字符查询string键
- 可能更好的search引擎优化(这可能是一个神话)
下划线
- 编程语言可能更容易处理
- 一些stream行的API(Facebook,Netflix,StackExchange等)在URI的所有部分使用下划线。
我倾向于所有的下划线。 大多数大牌玩家正在使用它们的事实引人注目(请参阅https://stackoverflow.com/a/608458/360570 )。
您应该在可抓取的Web应用程序URL中使用连字符。 为什么? 由于连字符分隔单词(以便search引擎可以索引单个单词),而不是单词字符 。 下划线是一个字的字符,这意味着它应该被视为一个字的一部分。
在Chrome中双击此项:camelCase
在Chrome中双击此项:under_score
在Chrome中双击此项:连字符
看看Chrome(我听说谷歌做search引擎)如何只认为其中之一是两个字?
camelCase
和underscore
也要求用户使用shift键,而hyphenated
不能。
因此,如果您应该在可抓取的Web应用程序中使用连字符,那么您为什么还要在Intranet应用程序中执行不同的操作? 还有一件事要记住。
REST API的标准最佳实践是使用连字符而不是驼峰或下划线。
这是来自Oreilly的Mark Masse的“REST APIdevise规则”。
另外,请注意堆栈溢出本身在URL中使用连字符: .../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris
和WordPress一样: http : //inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-to-know-to-program-not-that-much -actually
虽然我build议使用连字符,但我也会假设一个不在列表中的答案:
一无所有
- 我公司的API具有
/quotationrequests/
,/purchaseorders/
等URI。 - 尽pipe你说这是一个内联网应用程序,你列出SEO是一种好处。 Google确实与URL中的pattern / foobar /匹配,以查询
?q=foo+bar
- 我真的希望你不要考虑对任何用户传入地址栏的任意string进行PHP调用,正如@ServAce85所build议的那样!
一般来说,它不会有足够的影响担心,特别是因为它是一个内联网应用程序,而不是一个通用的互联网应用程序。 特别是因为它是内联网 ,search引擎优化不是一个问题,因为你的内联网不应该被search引擎访问。 (如果是的话,它不是一个内联网应用程序)。
任何值得使用的框架或者已经有了一个默认的方法来实现,或者很容易改变它处理多字词URL组件的方式,所以我不会太担心。
这就是说,我看到了各种select:
连字符号
- 连字符的最大危险在于相同的字符(通常)也用于减法和数字否定(即减号或负号 )。
- 连字符在URL组件中感觉很尴尬。 他们似乎只有在url的末尾有意义才能将文章标题中的词语分开。 或者,例如,为了SEO和用户清晰的目的,添加到URL末尾的堆栈溢出问题的标题。
下划线
- 同样,他们在URL组件中感觉不对。 他们打破了URL的stream动(和美丽/简单),因为它们在一个干净stream畅的URL中间添加了一个巨大的,明显的空间。
- 他们倾向于与下划线混合。 如果您希望您的用户将您的URL复制粘贴到MS Word或其他类似的文本编辑程序或任何其他可能选取URL并使用下划线(如传统链接)的方式粘贴,那么您可能希望避免用下划线作为单词分隔符。 特别是在打印时,带下划线的带下划线的URL往往看起来像是有空格而不是下划线。
骆驼香烟盒
- 到目前为止,我最喜欢的,因为它使得URL似乎stream动更好,没有任何前两个选项的缺点。
- 对于难以区分大写字母和小写字母的人来说,读起来可能会稍微困难一点,但是在URL中这不应该是一个大问题,因为大多数“字”应该是URL组件,并且由
/
无论如何。 如果你发现你有一个长度超过2“字”的URL组件,你应该试着为这个概念找一个更好的名字。 - 它具有区分大小写的可能问题,但大多数平台可以调整为区分大小写或不区分大小写。 对于2种情况,这只是一个真正的问题:a)人类在url中inputurl,b)程序员(因为我们不是人类)inputurl。无论区分大小写,错别字总是一个问题,所以这是没有什么不同,所有的情况下。
这里是两全其美的。
我也“喜欢”,除了你们所有关于他们的积极点外,还有一些老派的风格。
所以我所做的就是使用下划线,只需在Apache的.htaccess文件中添加一个小的重写规则,即可将所有下划线重写为连字符。