2012-04-24 345 views
269

我正在为Intranet应用程序设计一个基于HTTP的API。我意识到这是一个非常小的关注事项的宏伟计划,但:我应该使用连字符,下划线还是驼峰来分隔URI中的单词?用连字符,下划线或驼峰字符作为URI中的单词分隔符?


这里是我最初的想法:

驼峰

  • 可能出现的问题,如果服务器不区分大小写
  • 似乎在查询字符串键相当广泛使用(http://api.example.comsearchQuery = ...),但不在其他URI部分

连字符

  • 超过了其他替代
  • 似乎被广泛应用于URI
  • 从未见过复姓查询字符串键的路径部分野生
  • 美观
  • 可能对SEO更好(这可能是一个神话)

下划线

  • 可能更容易编程语言来处理
  • 几个流行的API(在Facebook,Netflix公司,StackExchange等)使用下划线的URI的所有部分。

我倾向于下划线的一切。大多数大牌玩家都在使用它们这一事实引人注目(见https://stackoverflow.com/a/608458/360570)。

+0

一切从我读过的,你应该* * **使用连字符**,**却强调** *似乎*更易于管理。 – ServAce85 2012-06-08 23:42:10

+2

@ ServAce85为什么? – 2012-06-25 15:08:01

+1

我相信**连字符**在一段时间内更适合搜索引擎优化的目的。现在可能并非如此,但许多人已经采用它,这被广泛接受为最佳实践。 **另一方面,下划线**可能更容易在后端编程中处理。我使用PHP,所以使用下划线作为函数名称比连字符要容易得多。 ** camelCase **可能是最容易实现的,但阅读它往往很困难。最后,我认为当你说你永远不会在野外看到'带连字符的查询字符串'时你是对的。这通常是camelCase的时间。 – ServAce85 2012-06-25 16:30:21

回答

245

你应该在抓取Web应用程序的URL中使用连字符。为什么?由于连字符分隔单词(以便搜索引擎可以索引单个单词),并且不是word character。下划线是一个单词字符,这意味着它应该被视为单词的一部分。在Chrome

双击此:驼峰在Chrome
双击此:在Chrome under_score
双击此:连字符ated

见Chrome浏览器(我听到谷歌做搜索引擎太)只认为其中之一是两个字?

camelCaseunderscore还需要用户使用转变关键,而hyphenated没有。

因此,如果您应该在可抓取的Web应用程序中使用连字符,为什么要在Intranet应用程序中执行不同的操作?还有一件事要记住。

+15

我的Windows 7上的Firefox 24认为'连字符'是两个单词。 – 2013-10-17 13:16:45

+9

,它的行为与'under_score'相同。 – 2013-10-17 13:23:17

+8

查询字符串的任何约定,例如'?event_id = 1'或'?eventId = 1' ??? – user2727195 2015-10-07 23:21:17

14

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

而且任何框架值得它的盐或者已经有一个默认的方式做到这一点,或者是很容易改变它如何与多字的URL组件的交易,所以我不会担心太多。

这就是说,这里是我所看到的各种选项:

连字符

  • 的连字符的最大危险是,相同的字符(典型值)也用于减法和数值否定(即减去否定)。
  • 连字符感觉在URL组件中很尴尬。他们似乎只在网址末尾有意义,才能在文章标题中分开单词。或者,例如,为了SEO和用户清晰度目的,将URL堆栈溢出问题的标题添加到URL的末尾。

下划线

  • 同样,他们觉得错在URL组件。他们打破了URL的流动(以及美观/简单),因为它们实际上在干净流畅的URL中间添加了一个巨大而明显的空间。
  • 他们倾向于与下划线混合。如果您希望用户将您的URL复制粘贴到MS Word或其他类似的文本编辑程序或其他任何可能选取URL并使用下划线(如链接传统上为)的地方,那么您可能会希望避免下划线作为单词分隔符。特别是在打印时,带下划线的带下划线的URL往往看起来像是它具有空格而不是下划线。

驼峰

  • 到目前为止我最喜欢的,因为它使网址似乎更好地流动,没有任何先前的两个选项做故障。
  • 可能是稍微有点难对于那些难以区分大写字母和小写字母的人来说很难阅读,但这在URL中应该不是问题,因为大多数“字”应该是URL组件无论如何由/分开。如果您发现您的URL组件长度超过2个“字”,您应该尝试为该概念找到更好的名称。
  • 确实有大小写可能的问题,但大多数平台都可以调整为两种区分大小写或不区分大小写。所有这只是真正 2例的问题:1)人类中键入URL,和b)程序员(因为我们不是人)中键入的URL错别字是总是一个问题,无论是否区分大小写的。 ,所以这一切都没有什么不同。
+7

不同意。看看SO,看看所有的WordPress站点,看看大多数新闻网站,他们都使用连字符。在我看来,骆驼案件混合案件,网络应该都是小写字母。 – 2015-05-11 22:22:07

+2

在我看来,网页实际上应该不区分大小写。 关于约定,如果你遵循RoR(ruby on rails)途径,你会使用下划线。通常,我这样做是为了保持轨道生成的路线和我命名的路线的一致性。 尽管如此,我认为对我来说,短划线比下划线更好。 – rpbaltazar 2015-09-24 13:05:41

+1

也许他们在内部网中有一个内部搜索引擎? – 2016-04-04 05:50:53

23

虽然我推荐的连字符,我也将假定一个答案,是不是在您的名单:

什么都没有

  • 我公司的API拥有的URI像/quotationrequests//purchaseorders/等。
  • 尽管你说这是一个Intranet应用程序,你列出了SEO作为一种好处。谷歌没有匹配的模式/ foobar的/在URL为?q=foo+bar
  • 查询我真的希望你不要考虑执行用户通过在地址栏一个PHP调用任意字符串,如@ ServAce85建议!
+3

随机选举人:小心解释这个答案有什么不好?我会尽可能地改善,或者,你是否因为不同意而投降? – 2013-08-27 09:09:00

+0

+1指出一个明显的选择。它也消除/引用/引用/引用/请求/中的引用。 – 2013-09-04 05:24:10

+13

这个回应的坏处在于,从SEO的角度来看,机器无法理解一个单词结束和另一个单词开始的位置,因此这些信息将丢失。对于读者来说也很难。有一些字级别的分隔符比没有更好。 – 2015-05-28 20:46:47

102

的REST API的标准的最佳做法是有一个连字符,没有驼峰或下划线。

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

另外,请注意,堆栈溢出本身使用的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

+2

如果查看REST API设计规则书中有关查询字符串准则的章节,您会注意到准则各不相同根据规则部分。在查询字符串中没有明确的规则,但是您会发现查询字符串中的所有示例均以骆驼为例。 – 2015-07-28 19:37:48

2

这里是两全其美的。

我也“喜欢”强调,除了你所有关于他们的积极点,他们也有一定的老派风格。

因此,我所做的是使用下划线,并且只需在Apache的.htaccess文件中添加一个小的重写规则,即可将所有下划线重新写入连字符。

​​

相关问题