我正在为Intranet应用程序设计基于HTTP的API。我意识到这是一个非常小的关注事项,但是:我应该使用连字符,下划线或camelCase来分隔URI中的单词吗?
以下是我最初的想法:
驼峰
连字符
下划线
我倾向于强调一切。大多数大玩家都在使用它们这一事实令人信服(见https://stackoverflow.com/a/608458/360570)。
答案 0 :(得分:376)
您应该在可抓取的Web应用程序URL中使用连字符。为什么?因为连字符分隔单词(以便搜索引擎可以索引单个单词),并且不是word character。下划线是一个单词字符,意味着它应该被视为单词的一部分。
在Chrome中双击它:camelCase
在Chrome中双击它:under_score
在Chrome中双击这个:连字符
了解Chrome(我听说谷歌也是一个搜索引擎)只认为其中一个是两个字?
camelCase
和underscore
也要求用户使用 shift 键,而hyphenated
则不需要。
因此,如果您应该在可爬网Web应用程序中使用连字符,为什么还要在Intranet应用程序中执行不同的操作?少记一点。
答案 1 :(得分:159)
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
答案 2 :(得分:25)
虽然我推荐连字符,我也会假设你的名单上没有答案:
一无所有
/quotationrequests/
,/purchaseorders/
等URI。?q=foo+bar
答案 3 :(得分:16)
一般情况下,担心不会产生足够的影响,特别是因为它是 intranet 应用程序,而不是通用的Internet应用程序。特别是,由于它是 intranet ,SEO不是一个问题,因为搜索引擎不应该访问您的内部网。 (如果是,则不是内联网应用程序。)
任何值得它的框架或者已经有一个默认的方法来做到这一点,或者很容易改变它处理多字URL组件的方式,所以我不会太担心它。
那就是说,这就是我看到各种选择的方式:
连字符
下划线
CamelCase
/
分隔。如果您发现您的网址组件长度超过2个“字”,那么您应该尝试为该概念找到更好的名称。答案 4 :(得分:9)
简短答案:
长答案:
URL的用途是什么?
如果指向一个地址就是答案,那么缩短的URL也会很好。如果我们不易于阅读和维护,那么它对开发人员和维护人员均无济于事。它们代表服务器上的实体,因此必须在逻辑上进行命名。
Google recommends using hyphens
请考虑在网址中使用标点符号。与http://www.example.com/green-dress.html相比,URL http://www.example.com/greendress.html对我们有用得多。我们建议您在网址中使用连字符(-)而不是下划线(_)。
camelCase来自编程背景,是命名联合词的流行选择。
但是RFC 3986将URL定义为区分URL的不同部分。 由于URL区分大小写,因此将其保持低调(小写)始终是安全的,并被认为是一个很好的标准。现在,这把骆驼保护套带出了窗外。
来源:https://metamug.com/article/rest-api-naming-best-practices.html#word-delimiters
答案 5 :(得分:0)
这两个世界都是最好的。
我也是"喜欢"强调,除了你对他们的所有积极观点外,还有一种老式的风格。
所以我所做的就是使用下划线,只需在Apache的.htaccess文件中添加一个小的重写规则,将所有下划线重新写入连字符。