Hyphen, underscore, or camelCase as word delimiter in URIs?

I'm designing an HTTP-based API for an intranet app. I realize it's a pretty small concern in the grand scheme of things, but: should I use hyphens, underscores, or camelCase to delimit words in the URIs?


Here are my initial thoughts:

camelCase

  • possible issues if server is case-insensitive
  • seems to have fairly widespread use in query string keys (http://api.example.com? searchQuery =...), but not in other URI parts
  • Hyphen

  • more aesthetically pleasing than the other alternatives
  • seems to be widely used in the path portion of the URI
  • never seen hyphenated query string key in the wild
  • possibly better for SEO (this may be a myth)
  • Underscore

  • potentially easier for programming languages to handle
  • several popular APIs (Facebook, Netflix, StackExchange, etc.) are using underscores in all parts of the URI.
  • I'm leaning towards underscores for everything. The fact that most of the big players are using them is compelling (see https://stackoverflow.com/a/608458/360570).


    You should use hyphens in a crawlable web application URL. Why? Because the hyphen separates words (so that a search engine can index the individual words), and is not a word character. Underscore is a word character, meaning it should be considered part of a word.

    Double-click this in Chrome: camelCase
    Double-click this in Chrome: under_score
    Double-click this in Chrome: hyphen-ated

    See how Chrome (I hear Google makes a search engine too) only thinks one of those is two words?

    camelCase and underscore also require the user to use the shift key, whereas hyphenated does not.

    So if you should use hyphens in a crawlable web application, why would you bother doing something different in an intranet application? One less thing to remember.


    The standard best practice for REST APIs is to have a hyphen , not camelcase or underscores.

    This comes from Mark Masse's "REST API Design Rulebook" from Oreilly.

    In addition, note that Stack Overflow itself uses hyphens in the URL: .../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris

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


    Whilst I recommend hyphens, I shall also postulate an answer that isn't on your list:

    Nothing At All

  • My company's API has URIs like /quotationrequests/ , /purchaseorders/ and so on.
  • Despite you saying it was an intranet app, you listed SEO as a benefit. Google does match the pattern /foobar/ in a URL for a query of ?q=foo+bar
  • I really hope you do not consider executing a PHP call to any arbitrary string the user passes in to the address bar, as @ServAce85 suggests!
  • 链接地址: http://www.djcxy.com/p/70108.html

    上一篇: 一个URI如何包含一个URN和一个URL?

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