我设计了一个内部网应用程序基于HTTP的API。 我意识到这是在事物的宏伟计划一个非常小的问题,但我应该用连字符,下划线或驼峰划定的URI的话吗?
下面是我最初的想法:
骆驼香烟盒
- 可能的问题,如果服务器不区分大小写
- 似乎在查询字符串键(相当广泛使用http://api.example.com ?SEARCHQUERY = ...),而不是在其他URI部分
连字符号
- 更加美观比其他替代赏心悦目
- 似乎被广泛使用在URI的路径部分
- 在野外没见过连字符的查询字符串键
- 可能对SEO更好(这可能是一个神话)
下划线
- 可能更容易编程语言来处理
- 几个流行的API(脸谱,Netflix的,StackExchange等)使用在URI的所有部分下划线。
我倾向于下划线的一切。 大多数的大玩家使用它们的事实是引人注目(见https://stackoverflow.com/a/608458/360570 )。
你应该在抓取Web应用程序的URL中使用连字符。 为什么? 因为连字符隔开的话(这样一个搜索引擎能够索引的单个单词),而不是一个单词字符 。 下划线是单词字符,这意味着它应该被视为一个字的一部分。
在Chrome中双击此:驼峰
在Chrome中双击此:under_score
在Chrome中双击此:连字符ated
怎么看浏览器(我听到谷歌做搜索引擎太)只是认为其中之一就是两个字?
camelCase
并underscore
还需要用户使用shift键,而hyphenated
没有。
所以,如果你要在抓取Web应用程序中使用连字符,为什么还要颇费周折做一些在Intranet应用程序有什么不同? 少了一个要记住。
为REST API的标准的最佳做法是有一个连字符 ,没有驼峰或下划线。
这是来自马克·马塞的“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
虽然我建议连字符,我也将假定一个答案,是不是在您的名单:
什么都没有
- 我公司的API有类似的URI
/quotationrequests/
, /purchaseorders/
等。 - 尽管你说这是一个Intranet应用程序,你上市SEO的好处。 谷歌没有匹配的模式/ foobar的/ URL中的一个查询
?q=foo+bar
- 我真的希望你不考虑执行用户通过在地址栏一个PHP调用任意字符串,如@ ServAce85建议!
在一般情况下,它不会有足够的影响担心,特别是因为它是一个企业内部网应用程序,而不是一个通用的网络应用程序。 特别是,由于它的内部网 ,SEO是不是一个问题,因为你的内部网络不应该访问的搜索引擎。 (如果它是,它不是内部网应用程序)。
任何值得框架是盐或者已经有一个默认的方式做到这一点,或者是很容易改变它如何与多字的URL组件的交易,所以我不会担心太多。
这就是说,这里是我所看到的各种选项:
连字符号
- 为连字符的最大危险是,相同的字符(典型地)也用于减法和数值否定(即, 减去或负 )。
- 连字符感到 URL组件尴尬。 他们似乎只在URL中的一篇文章的标题分隔单词的末尾意义。 或者,例如,被添加到搜索引擎优化和用户清晰的目的网址的结尾堆栈溢出问题的标题。
下划线
- 同样,他们觉得错在URL组件。 他们打破了一个网址的流量(和美容/简单),因为它们基本上是在一个干净,流动URL的中间增加一个又大又重明显的空间。
- 他们往往用下划线融为一体。 如果你希望你的用户复制粘贴网址到MS Word或其他类似的文本编辑程序,或其他地方,可能拿起一个URL和风格也有下划线(如链接传统的),那么你可能想避免下划线作为单词分隔符。 特别是在打印时,用下划线带下划线的URL往往看起来像它有它,而不是下划线的空间 。
骆驼香烟盒
- 到目前为止我最喜欢的,因为它使网址似乎更好地流动,没有任何先前的两个选项做故障。
- 可以稍微难读为也很难从小写区分大写的人,但是这不应该是太大的问题的URL,因为最“字”应该是URL组件和分离
/
无论如何。 如果你发现你有一个URL组件超过2“字”长,你应该设法找到这一概念一个更好的名字。 - 它也有区分大小写可能的问题,但大多数平台都可以调整为两种区分大小写或不区分大小写。 所有这只有真正 2例的问题:1)人类中键入URL,和b)程序员(因为我们不是人)中键入的URL错别字始终是一个问题,无论区分大小写的,所以这是。没有什么不同,所有的一例。
这里是两全其美。
我也“喜欢”下划线,除了对他们所有的正分,也有一定的老派风格给他们。
所以我要做的就是用下划线并只需添加一个小的重写规则到Apache的.htaccess文件,重写所有彰显了连字符。
https://yoast.com/apache-rewrite-dash-underscore/