连字符,下划线或camelCase作为URI中的单词分隔符?

Jos*_*son 428 api rest url uri restful-url

我正在为Intranet应用程序设计基于HTTP的API.我意识到这是一个非常小的问题,在宏观方案中,但是:我应该使用连字符,下划线或camelCase来分隔URI中的单词吗?


以下是我最初的想法:

骆驼香烟盒

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

连字符号

  • 比其他替代品更美观
  • 似乎广泛用于URI的路径部分
  • 从未在野外见过带连字符的查询字符串键
  • 可能更适合SEO(这可能是一个神话)

下划线

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

对于一切我都倾向于下划线.大多数大型玩家使用它们的事实令人信服(参见/sf/answers/42592091/).

Nei*_*gan 424

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

在Chrome中双击此项:camelCase在Chrome中
双击此项:under_score
在Chrome中双击此项:连字符

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

camelCase并且underscore还要求用户使用shift密钥,而hyphenated不是.

因此,如果您应该在可爬网Web应用程序中使用连字符,为什么还要在Intranet应用程序中执行不同的操作呢?少记一点.

  • 我在Windows 7上的Firefox 24认为'连字'是两个字. (18认同)
  • queryString的任何约定,例如`?event_id = 1`或`?eventId = 1` ??? (14认同)
  • 并且它对'under_score'的行为相同. (9认同)
  • @ user2727195尽管URL区分大小写,但最佳做法是尽可能使用小写,因为它消除了错误输入的可能性. (8认同)
  • 互动答案:) (3认同)

Al *_*art 183

REST API的标准最佳实践是使用连字符,而不是camelcase或下划线.

这来自Oreilly的Mark Masse的"REST API设计规则手册".

另外,请注意Stack Overflow本身在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

  • 如果查看REST API设计规则手册中有关查询字符串准则的章节,您会注意到这些准则因规则部分而异.关于查询字符串中的大小写没有明确的规则,但是您会发现查询字符串部分中的所有示例都表明所有键都是驼峰式的. (3认同)
  • 仅供参考 - “REST API 设计规则手册”于 2011 年 10 月发布。过去 8 年里情况可能发生了变化。 (2认同)

Nic*_*nks 27

虽然我推荐使用连字符,但我还会假设一个不在你名单上的答案:

什么都没有

  • 我公司的API有类似的URI /quotationrequests/,/purchaseorders/依此类推.
  • 尽管你说它是一个内联网应用程序,你列出了SEO作为一个好处.Google确实匹配用于查询的网址中的模式/ foobar /?q=foo+bar
  • 真的希望你不要考虑对用户传入地址栏的任意字符串执行PHP调用,正如@ ServAce85建议的那样!

  • 这种反应的不好之处在于,从SEO的角度来看,机器无法理解一个单词结束而另一个单词开始的位置,因此这些信息会丢失.这对人类读者来说也很难.有一些单词级别的分隔符比什么都没有好. (28认同)
  • 随机选民:关心解释这个答案有什么不好?我会尽我所能改进,或者,你是不是因为不同意而投票? (4认同)
  • @AlSweigart SEO不相关,因为这是登录墙后面的内部网应用程序. (3认同)
  • 我同意@ niel-mcguigan的意见,即使这是一个内联网应用程序,如果你在任何地方都使用连字符,那么记住它就少了一点. (2认同)
  • @DrewGoodwin 足够公平。尽管请注意,我说的是“假设”而不是“推荐”:-) 并且域中通常没有连字符,因此在路径中使用它们已经是另一件事要记住。 (2认同)
  • 它还会在 IDE 中抛出各种拼写错误,因为无法检查混搭的单词。一个可能但实际上拼写错误的 REST 路由的小问题可能会导致错误,因此让拼写检查器工作实际上是一个很好的好处。 (2认同)

cde*_*zaq 18

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

任何值得它盐的框架要么已经有了默认的方法来做到这一点,要么很容易改变它处理多字URL组件的方式,所以我不会太担心它.

也就是说,这是我看到各种选项的方式:

连字符号

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

下划线

  • 同样,他们在URL组件中感觉不对.它们打破了URL的流程(以及美观/简单),因为它们实际上在一个干净,流畅的URL中间添加了一个巨大而沉重的表观空间.
  • 他们倾向于与下划线融为一体.如果您希望您的用户将您的网址复制粘贴到MS Word或其他类似的文本编辑程序中,或者其他任何可能会在网址上搜索并使用下划线(如传统上的链接)进行设置,那么您可能希望避免将下划线作为单词分隔符.特别是在打印时,带下划线的带下划线的URL往往看起来像是有空格而不是下划线.

骆驼香烟盒

  • 到目前为止,我最喜欢的,因为它使URL看起来更好,并且没有前两个选项所做的任何错误.
  • 对于那些难以区分大写和小写的人来说可能会稍微难以阅读,但这在URL中应该不是很大的问题,因为大多数"单词"应该是URL组件并且/相反地分开.如果您发现您的URL组件长度超过2个"单词",那么您应该尝试为该概念找到更好的名称.
  • 确实存在区分大小写的问题,但大多数平台可以调整为区分大小写或不区分大小写.任何它只是2个案例的真正问题:a.)人类输入URL,和b.)程序员(因为我们不是人类)键入URL.错字总是一个问题,无论区分大小写,所以这是所有案例都没有什么不同.

  • 不同意.看看SO,看看所有的wordpress网站,看看大多数新闻网站,他们都使用连字符.还有驼峰案例混合案例,在我看来网络应该全是小写的. (12认同)
  • 在我看来,网络实际上应该不区分大小写.关于惯例,如果你遵循RoR(ruby on rails)路线方法,你会使用下划线.通常,我这样做是为了保持它在铁路生成的路线和我的命名路线上保持一致.不过,我认为对我来说,破折号比下划线更好. (4认同)
  • 不同意.你对连字符的两个论点都是有缺陷的.没有否定或减法的危险,因为我们在这里谈论元组的名称部分,你永远不应该运作或评估元组的名称部分用于数学或否定.在URI中使用连字符也没有什么尴尬,因为它是缺乏完善网站所使用的长期最佳实践.它们也不需要按Shift键,几乎每个人都被视为字边界. (3认同)
  • 早在我记忆中,连字符一直是URL中常用的规范,绝对被认为是当今标准中的最佳实践.不使用它们因为*感觉*尴尬对我来说似乎很尴尬. (2认同)

Sor*_*ter 17

简答:

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

长答案:

URL 的目的是什么?

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

Google 建议使用连字符

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

来自编程背景,camelCase 是命名联合词的流行选择。

但是RFC 3986将 URL 定义为对 URL 的不同部分区分大小写。由于 URL 区分大小写,保持低调(小写)总是安全的,被认为是一个很好的标准。现在,从窗口取出一个骆驼箱。

来源:https : //metamug.com/article/rest-api-naming-best-practices.html#word-delimiters


小智 7

推荐使用spine-case(RFC3986中重点强调的),Google、PayPal等大公司都使用这个案例。

来源:- https://blog.restcase.com/5-basic-rest-api-design-guidelines/

编辑:虽然 RFC 上的亮点无处可寻,但关于脊柱案例的建议仍然有效(正如其他答案中已经指出的那样)

  • 找不到 RFC3986 中的亮点 - 你能指出在哪个部分吗? (2认同)

小智 6

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