Trait d'union, un trait de soulignement ou camelCase comme délimiteurs de mot dans les Uri?
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 d'autres URI pièces
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
- éventuellement 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 https://stackoverflow.com/a/608458/360570).
- De tout ce que j'ai lu, vous devez utiliser des traits d'union, mais des traits de soulignement semble plus facile à gérer.
- Pourquoi?
- Je crois que des traits d'union ont été, à un moment, le mieux pour les fins de SEO. Cela pourrait ne pas être vrai aujourd'hui, mais beaucoup de gens l'ont adopté, il est de plus en plus largement accepté comme une meilleure pratique. des traits de Soulignement d'autre part, peut-être plus facile à traiter dans le backend de programmation. J'utilise le PHP, il est donc beaucoup plus facile d'utiliser un trait de soulignement pour un nom de fonction qu'un trait d'union. camelCase peut-être le plus facile à mettre en œuvre, mais la lecture, il est souvent difficile. Enfin, je pense que vous avez raison quand vous avez dit que vous ne verrez jamais un
hyphenated query string in the wild
. C'est généralement un temps pour camelCase. - Conformément à cette question, le trait de soulignement n'est pas une option valide: stackoverflow.com/questions/3641722/...
- Double Possible de il y a aucune convention de nommage des lignes directrices pour l'Api REST?
- Vous mentionnez populaire Api, j'aimerais ajouter un: Google. Autant que je l'ai vu, Google utilise rien du tout entre les mots (vérifier les Cartes Google maps Matrice de Distance de l'API par exemple).
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser des traits d'union dans un crawlable URL de l'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, le sens qu'il devrait être considéré comme faisant partie d'un 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?
camelCase
etunderscore
demande à l'utilisateur d'utiliser le maj clé, alors quehyphenated
ne le fait pas.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.
?event_id=1
ou?eventId=1
???id
le nom du paramètre et justeevent=1
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 "de l'API REST de Conception Rulebook" de Oreilly.
En outre, noter que le Dépassement de la Pile elle-même utilise des traits d'union dans l'URL:
.../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris
Comme WordPress: http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-to-know-to-program-not-that-much-actually
Tandis que je recommande traits d'union, je vais aussi postuler une réponse qui n'est pas sur votre liste:
Rien Du Tout
/quotationrequests/
,/purchaseorders/
et ainsi de suite.?q=foo+bar
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 intranet, le 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 de 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
Trait de soulignement
CamelCase
/
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.voici le meilleur des deux mondes.
J'ai aussi "comme le met en évidence, 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 caractères de soulignement et simplement ajouter une petite règle de réécriture à votre Apache .fichier htaccess pour ré-écrire tous les caractères de soulignement pour les traits d'union.
https://yoast.com/apache-rewrite-dash-underscore/