Trait d'Union, trait de soulignement ou CamelCase comme délimiteur de mots dans les URI?

Je conçois une API basée sur HTTP pour une application intranet. Je me rends compte que c'est une assez petite préoccupation dans le grand schéma des choses, mais: devrais-je utiliser des traits d'union, des traits de soulignement ou camelCase pour délimiter les mots dans les URI?


Voici mes premières pensées:

CamelCase

  • problèmes possibles si le serveur est insensible à la casse
  • semble avoir une utilisation assez répandue dans les clés de chaîne de requête ( http://api.example.com? searchQuery=...), mais pas dans d'autres parties D'URI

Trait d'union

  • plus esthétique que les autres solutions
  • semble être largement utilisé dans la partie path de L'URI
  • jamais vu clé de chaîne de requête avec trait d'Union dans la nature
  • peut-être mieux pour le référencement (cela peut être un mythe)

Trait de Soulignement

  • potentiellement plus facile pour la programmation langues à gérer
  • plusieurs API populaires (Facebook, Netflix, StackExchange, etc.) utilisent des traits de soulignement dans toutes les parties de L'URI.

Je penche vers les soulignements pour tout. Le fait que la plupart des grands joueurs les utilisent est convaincant (voir https://stackoverflow.com/a/608458/360570).

322
demandé sur Community 2012-04-24 20:37:34

5 réponses

Vous devez utiliser des tirets dans une URL d'application web explorable. Pourquoi? Parce que le trait d'Union sépare les mots (de sorte qu'un moteur de recherche peut indexer les mots individuels), et n'est pas un caractère de mot . Underscore est un caractère de mot, ce qui signifie qu'il doit être considéré comme faisant partie d'un mot.

Double-cliquez sur ceci dans Chrome: camelCase
Double-cliquez sur ceci dans Chrome: under_score
Double-cliquez sur ceci dans Chrome: hyphen-ated

Voir comment Chrome (j'entends Google fait un moteur de recherche aussi) un seul de ces mots est deux?

camelCase et underscore exigent également que l'utilisateur utilise la touche shift , alors que hyphenated ne le fait pas.

Donc, si vous devez utiliser des tirets dans une application web explorable, pourquoi voudriez-vous prendre la peine de faire quelque chose de différent dans une application intranet? Une chose de moins à retenir.

308
répondu Neil McGuigan 2016-03-03 21:26:45

La meilleure pratique standard pour les API REST est d'avoir un trait d'Union , Pas camelcase ou underscores.

Cela vient du "REST API Design Rulebook" de Mark Masse d'Oreilly.

En outre, notez que Stack Overflow lui-même utilise des tirets dans L'URL: .../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris

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

132
répondu Al Sweigart 2015-08-19 00:02:37

Alors que je recommande des traits d'UNION, Je postulerai également une réponse qui ne figure pas sur votre liste:

Rien Du Tout

  • L'API de ma société a des URI comme /quotationrequests/, /purchaseorders/ et ainsi de suite.
  • Bien que vous disiez que c'était une application intranet, vous avez répertorié le référencement comme un avantage. Google correspond au modèle / foobar/ dans une URL pour une requête de ?q=foo+bar
  • je vraiment j'espère que vous n'envisagez pas d'exécuter un appel PHP à une chaîne arbitraire que l'utilisateur transmet au barre d'adresse, comme le suggère @ServAce85!
21
répondu Nicholas Shanks 2017-05-26 09:15:55

En général, cela n'aura pas assez d'impact à craindre, 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 de intranet, Le référencement n'est pas un problème, 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 qui en vaut la peine 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 multi-mots, donc il ne faut pas s'inquiéter trop.

Cela dit, voici comment je vois les différentes options:

Trait d'union

  • le plus grand danger pour les tirets est que le même caractère (typiquement) est également utilisé pour la soustraction et la négation numérique (ie. moins ou négatif).
  • tirets sensation maladroit dans les composants D'URL. Ils semblent n'ont de sens à la fin d'une URL pour séparer les mots dans le titre d'un article. Ou, par exemple, le titre d'une question de débordement de pile qui est ajoutée à la fin d'une URL à des fins de référencement et de clarté utilisateur.

Trait de Soulignement

  • encore une fois, ils se sentent mal dans les composants D'URL. Ils brisent le flux (et la beauté / simplicité) d'une URL, car ils ajoutent essentiellement un grand espace apparent lourd au milieu d'une URL propre et fluide.
  • Ils ont tendance à se fondre dans les soulignements. Si vous vous attendez à ce que vos utilisateurs copient-collent vos URL dans MS Word ou autre similaire les programmes d'édition de texte, ou n'importe où ailleurs qui pourraient ramasser sur une URL et le style avec un soulignement (comme les liens traditionnellement sont), alors vous voudrez peut-être éviter les traits de soulignement comme séparateurs de mots. En particulier lorsqu'elle est imprimée, une URL soulignée avec des traits de soulignement a tendance à ressembler à espaces au lieu de traits de soulignement.

CamelCase

  • de loin mon préféré, car il rend les URLs semblent mieux circuler et n'a aucun des défauts que les deux options précédentes font.
  • peut être légèrement plus difficile à lire pour les personnes qui ont du mal à différencier les majuscules des minuscules, mais cela ne devrait pas être un problème dans une URL, car la plupart des "mots" devraient être des composants D'URL et séparés par un / de toute façon. Si vous trouvez que vous avez un composant URL de plus de 2 "mots", vous devriez probablement essayer de trouver un meilleur nom pour ce concept.
  • Il ne avez un problème possible avec cas sensibilité, mais la plupart des plates-formes peuvent être ajustées pour être sensibles à la casse ou insensibles à la casse. Tout ce n'est que vraiment un problème pour 2 Cas: A.) Les humains tapant L'URL, et B.) Les programmeurs (puisque nous ne sommes pas humains) tapant l'URL. Les fautes de frappe sont toujours un problème, quelle que soit la sensibilité à la casse, donc ce n'est pas différent de tous les cas.
13
répondu cdeszaq 2012-10-31 13:25:43

Voici le meilleur des deux mondes.

J'aime aussi les soulignements, en plus de tous vos points positifs à leur sujet, il y a aussi un certain style old-school pour eux.

Donc, ce que je fais est d'utiliser des traits de soulignement et d'ajouter simplement une petite règle de réécriture à celle de votre Apache .fichier htaccess pour réécrire tous les traits de soulignement dans les tirets.

Https://yoast.com/apache-rewrite-dash-underscore/

1
répondu user2597538 2015-06-09 23:49:17