774 votes

Trait d’Union, trait de soulignement ou camelCase comme délimiteur de mot dans les URIs ?

Je suis de la conception d'un réseau HTTP API pour un intranet d'application. Je me rends compte que c'est un joli petit souci dans le grand schéma des choses, mais: dois-je utiliser des traits d'union, des traits de soulignement, ou camelCase pour séparer les mots dans les Uri?


Voici mes premières impressions:

camelCase

  • problèmes possibles si le serveur est insensible à la casse
  • semble avoir assez large utilisation dans la chaîne de requête de touches (http://api.example.com?a=...), mais pas dans les autres pièces de URI

Trait d'union

  • plus esthétique que les autres solutions
  • semble être largement utilisé dans la partie du chemin d'accès de l'URI
  • jamais vu un trait d'union de la chaîne de requête de la clé dans la nature
  • probablement mieux pour le RÉFÉRENCEMENT (ce peut être un mythe)

Trait de soulignement

  • potentiellement plus facile pour les langages de programmation pour gérer
  • plusieurs Api (Facebook, Netflix, StackExchange, etc.) utilisez des caractères de soulignement dans toutes les parties de l'URI.

Je suis penchée vers souligne de tout. Le fait que la plupart des gros joueurs sont l'utilisation, est convaincant (voir http://stackoverflow.com/a/608458/360570).

765voto

Neil McGuigan Points 10123

Vous devez utiliser des traits d'union dans un crawlable application web. Pourquoi? Parce que le trait d'union sépare les mots (de sorte qu'un moteur de recherche peuvent indexer les mots individuels), et n'est pas un caractère de mot. Trait de soulignement est un caractère de mot.

Double-cliquez sur ce dans Chrome: camelCase
Double-cliquez sur ce dans Chrome: under_score
Double-cliquez sur ce dans Chrome: trait d'union-auf s i indiqué

Voir comment Chrome (j'entends Google fait un moteur de recherche, de trop) ne pense qu'un de ces deux mots?

Donc, si vous devez utiliser des traits d'union dans un crawlable application web, pourquoi vous la peine de faire quelque chose de différent dans une application intranet? Une chose de moins à retenir.

376voto

Al Sweigart Points 198

La norme de meilleure pratique pour les Api REST est d'avoir un trait d'union, pas camelcase ou des traits de soulignement.

Cela vient de la Marque de Masse "API REST Conception du Livret de règles" de Oreilly.

En outre, noter que le Dépassement de la Pile elle-même utilise des traits d'union: trait d'union, un trait de soulignement ou camelCase comme délimiteurs de mot dans les Uri?

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

32voto

Nicholas Points 2862

Je vais postuler une réponse qui n'est pas sur votre liste:

Rien Du Tout

  • Mon API a des URIs comme /quotationrequests/, /purchaseorders/ et ainsi de suite.
  • En dépit de vous dire que c'était une application intranet, vous avez énumérés SEO comme un avantage. Google ne correspond pas au modèle /foobar/ dans l'URL d'une requête d' ?q=foo+bar
  • J'ai vraiment l'espoir que vous ne considérons pas l'exécution d'un appel PHP à n'importe quelle chaîne de caractères que l'utilisateur a réussi dans la barre d'adresse, comme @ServAce85 suggère!

24voto

cdeszaq Points 16275

En général, il ne va pas avoir assez d'impact pour inquiéter, en particulier puisque c'est un intranet application et non d'une utilisation générale d'Internet app. En particulier, puisque c'est de l'intranet, RÉFÉRENCEMENT n'est pas une préoccupation, depuis votre intranet ne doit pas être accessible aux moteurs de recherche. (et si elle l'est, elle n'est pas une application intranet).

Et tout cadre vaut son sel soit déjà a défaut de ce faire, ou est assez facile de changer la façon de traiter avec multi-parole URL composants, 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 traits d'union, c'est que le même personnage (généralement) est également utilisé pour la soustraction numérique et de la négation (c'est à dire. moins ou négatif).
  • Les traits d'union se sentir maladroit dans l'URL de composants. 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'un Débordement de Pile question qui est ajouté à la fin d'une URL pour le RÉFÉRENCEMENT et l'utilisateur des raisons de clarté.

Trait de soulignement

  • De nouveau, ils se sentent mal dans l'URL de composants. Ils cassent le débit (et de la beauté/de la simplicité) d'une URL, car ils sont essentiellement ajouter un grand, lourd apparente de l'espace au moyen d'un chiffon propre, qui coule de l'URL.
  • Ils ont tendance à se fondre avec souligne. Si vous pensez que vos utilisateurs à copier-coller l'Url dans MS Word ou autre texte similaire, les programmes de montage, ou n'importe où d'autre qui pourrait ramasser sur une URL et le style avec un trait de soulignement (comme des liens traditionnellement sont), alors vous voudrez peut-être éviter traits de soulignement comme des séparateurs de mots. En particulier lors de l'impression, a souligné URL avec des traits de soulignement a tendance à regarder comme il a des espaces à la place des caractères de soulignement.

CamelCase

  • De loin mon préféré, car il rend l'Url semble une meilleure circulation et n'a aucun des défauts que les deux précédentes options.
  • Peut être légèrement plus difficile à lire pour les gens qui ont un moment difficile différencier les majuscules de bas-de-casse, mais cela ne devrait pas être un problème dans une URL, parce que la plupart des "mots" doit être l'URL de composants et séparés par un / , de toute façon. Si vous trouvez que vous avez un composant de l'URL qui est de plus de 2 "mots", vous devriez probablement essayer de trouver un meilleur nom pour ce concept.
  • Il ne avoir un problème possible avec de la casse, mais la plupart des plates-formes peut être ajustée soit sensible ou non sensible à la casse. Tout c'est seulement vraiment un problème pour les 2 cas de figure: un.) l'homme tapant l'URL dans, et (b).) Les programmeurs (comme nous ne sommes pas humains) en tapant l'URL dans. Les fautes de frappe sont toujours un problème, indépendamment de la casse, donc ce n'est pas différent que tout un cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X