Je conçois une API basée sur HTTP pour une application intranet. Je me rends compte que c’est un problème assez peu important dans l’ordre des choses, mais: devrais-je utiliser des tirets, des traits de soulignement ou camelCase pour délimiter des mots dans les URI?
Voici mes premières pensées:
camelCase
Trait d'union
Soulignement
Je me penche vers des traits de soulignement pour tout. Le fait que la plupart des gros joueurs les utilisent est convaincant (voir https://stackoverflow.com/a/608458/36057 ).
Vous devez utiliser des traits d'union dans une URL d'application Web analysable. Pourquoi? Parce que le trait d'union sépare les mots (afin qu'un moteur de recherche puisse indexer les mots individuels), et n'est pas un caractère Word . Le trait de soulignement est un caractère Word, ce qui signifie qu'il doit être considéré comme faisant partie d'un mot.
Double-cliquez dessus dans Chrome: camelCase
Double-cliquez sur ceci dans Chrome: under_score
Double-cliquez sur ceci dans Chrome: trait d'union
Voyez comment Chrome (j'entends aussi Google créer un moteur de recherche) pense que l'un de ces mots est deux?
camelCase
et underscore
obligent également l'utilisateur à utiliser le shift touche, alors que hyphenated
ne le fait pas.
Donc, si vous devriez utiliser des traits d'union dans une application Web analysable, pourquoi voudriez-vous vous occuper de faire quelque chose de différent dans une application intranet? Une chose de moins à retenir.
La meilleure pratique standard pour les API REST consiste à avoir un trait d'union , et non un camelcase ou des traits de soulignement.
Cela vient du "Livre de règles de conception d'API REST" de Mark Masse à Oreilly.
De plus, notez que Stack Overflow lui-même utilise des traits d'union dans l'URL: .../hyphen-underscore-or-camelcase-as-Word-delimiter-in-uris
De même que WordPress: http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-tknow-to-program-not-that-much- en fait
Alors que je recommande des traits d'union, je vais aussi postuler une réponse qui ne figure pas sur votre liste:
rien du tout
/quotationrequests/
, /purchaseorders/
, etc.?q=foo+bar
En général, cela n'aura pas assez d'impact pour s'inquiéter, d'autant plus qu'il s'agit d'une application intranet et non d'une application Internet à usage général. En particulier, comme il s’agit d’un intranet , le référencement n’est pas une préoccupation, car votre intranet ne devrait pas être accessible aux moteurs de recherche. (et si c'est le cas, ce n'est pas une application intranet).
Et tout framework digne de ce nom a déjà un moyen par défaut de le faire ou est assez facile de changer la façon dont il traite les composants d'URL à mots multiples. Je ne m'inquiéterais donc pas trop de cela.
Cela dit, voici comment je vois les différentes options:
trait d'union
nderscore
CamelCase
/
de toute façon. Si vous constatez que votre composant URL compte plus de 2 mots, vous devriez probablement essayer de trouver un meilleur nom pour ce concept.voici le meilleur des deux mondes.
J'aime aussi "souligner" les soulignements, en plus de tous vos points positifs, il y a aussi un certain style old school.
Donc, ce que je fais est d'utiliser des traits de soulignement et d'ajouter simplement une petite règle de réécriture au fichier .htaccess de votre Apache pour réécrire tous les traits de soulignement en traits d'union.