在uri中,连字符、下划线或骆驼字分隔符?

我正在为一个内部网应用程序设计一个基于http的API。我意识到这在宏大的计划中是一个非常小的问题,但是:我应该使用连字符、下划线或驼峰字来分隔uri中的单词吗?


以下是我最初的想法:

camelCase

连字符

  • 比其他选择更具美感
  • 似乎在URI的路径部分被广泛使用
  • 从来没有见过连字符的查询字符串键在野外
  • 可能更好的搜索引擎优化(这可能是一个神话)

下划线

  • 编程语言可能更容易处理
  • 一些流行的api (Facebook、Netflix、课件等)在URI的所有部分都使用下划线。

我倾向于用下划线表示所有内容。事实上,大多数大公司都在使用它们,这是引人注目的(参见https://stackoverflow.com/a/608458/360570)。

291942 次浏览

一般来说,它不会有足够的影响来担心,特别是因为它是一个内部网应用程序,而不是一个通用的互联网应用程序。特别是,因为它是内部网, SEO不是一个问题,因为您的内部网不应该被搜索引擎访问。(如果是,也不是内部网应用)。

任何值得信赖的框架要么已经有默认的方式来做这件事,要么很容易改变它处理多字URL组件的方式,所以我不会太担心这个问题。

也就是说,以下是我对各种选择的看法:

# EYZ0

  • 连字符最大的危险是同一字符(通常)也用于减法和数字否定(即。-)。
  • 连字符感觉在URL组件中很尴尬。它们似乎只在URL的末尾用于分隔文章标题中的单词才有意义。或者,例如,Stack Overflow问题的标题被添加到URL的末尾,用于SEO和用户清晰的目的。

# EYZ0

  • 同样,它们在URL组件中感觉不对。它们打破了URL的流动(和美丽/简单),因为它们本质上是在一个干净流畅的URL中间添加了一个大而沉重的明显空间。
  • 它们往往和下划线混在一起。如果你希望你的用户复制粘贴你的URL到MS Word或其他类似的文本编辑程序,或任何其他地方,可能会选择一个URL和样式与下划线(如链接传统上),那么你可能要避免下划线作为单词分隔符。特别是在打印时,带下划线的带下划线的URL往往看起来像有空间而不是下划线。

# EYZ0

  • 到目前为止,这是我的最爱,因为它使url看起来更好地流动,并且没有前两个选项所具有的任何错误。
  • 对于那些很难区分大写和小写的人来说,可能更难阅读,但这在URL中不应该是一个大问题,因为大多数“单词”应该是URL组件,并由/分隔。如果您发现您的URL组件长度超过2个“单词”,您可能应该尝试为该概念找到一个更好的名称。
  • 可能在区分大小写方面有问题,但大多数平台都可以调整为区分大小写或不区分大小写。任何情况下,只有真的是一个问题:a.)人类输入URL,和b.)程序员(因为我们不是人类)输入URL。错别字是总是的一个问题,不管大小写是否敏感,所以这与全是一个大小写没有区别。

我推荐连字符,,我也将假设一个不在你列表上的答案:

什么都没有

  • 我公司的API有/quotationrequests//purchaseorders/等uri。
  • 尽管你说这是一个内部网应用,但你把搜索引擎优化列为一个好处。对于?q=foo+bar的查询,谷歌确实匹配URL中的模式/foobar/
  • 真的希望您不要考虑像@ServAce85所建议的那样,对用户传递到地址栏的任意字符串执行PHP调用!

REST api的标准最佳实践是使用连字符,而不是驼峰或下划线。

这来自Mark Masse的Oreilly的“REST API设计规则手册”。

此外,请注意Stack Overflow本身在URL中使用了连字符:.../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris

http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-to-know-to-program-not-that-much-actually也是

你应该在可爬行的web应用程序URL中使用连字符。为什么?因为连字符分隔单词(以便搜索引擎可以索引单个单词),而且连字符不是单词字符。下划线是一个单词字符,这意味着它应该被认为是单词的一部分。

在Chrome中双击:camelCase
. 在Chrome中双击:under_score
在Chrome中双击它:连字符

看看Chrome(我听说谷歌也做了一个搜索引擎)只认为其中一个是两个词?

camelCaseunderscore也要求用户使用转变键,而hyphenated则不需要。

所以,如果你应该在一个可爬行的web应用程序中使用连字符,为什么要在一个内部网应用程序中做一些不同的事情呢?少记一件事。

这是两全其美的东西。

我还“喜欢”强调,除了你对他们的所有积极的观点外,他们也有某种老派的风格。

因此,我所做的就是使用下划线,并简单地在Apache的.htaccess文件中添加一个小重写规则,将所有下划线重写为连字符。

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

简短的回答:

用连字符作为分隔符的小写单词

长一点的回答:

URL的目的是什么?

如果指向一个地址是答案,那么一个缩短的URL也是一个很好的工作。如果我们不能让它易于阅读和维护,它就不能帮助开发人员和维护人员。它们表示服务器上的一个实体,因此必须按逻辑命名。

谷歌建议使用连字符

考虑在url中使用标点符号。URL http://www.example.com/green-dress.htmlhttp://www.example.com/greendress.html更有用。我们建议您在url中使用连字符(-)而不是下划线(_)。

从编程背景来看,camelCase是命名连词的流行选择。

但是RFC 3986将URL定义为URL的不同部分区分大小写。 由于url是大小写敏感的,所以保持低调(小写)总是安全的,并且被认为是一个很好的标准。

来源:# EYZ0

建议使用脊柱盒(突出显示为 RFC3986),这个案例被谷歌,PayPal,和其他大 公司。< / p >

来源:- # EYZ0

编辑:虽然RFC上的重点没有找到,但关于脊柱病例的建议仍然有效(正如已经在其他答案中指出的那样)

我们应该在网页URL中使用连字符来说服搜索引擎分别索引URL中的每个关键字。