连字符,下划线或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引擎)如何只认为其中之一是两个字?

camelCaseunderscore也要求用户使用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文件中添加一个小的重写规则,即可将所有下划线重写为连字符。

https://yoast.com/apache-rewrite-dash-underscore/