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: dois-je utiliser des tirets, des traits de soulignement ou camelCase pour délimiter les mots dans les URI?
Voici mes premières réflexions:
affaire de chameau
- problèmes possibles si le serveur ne respecte pas 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 URI
Trait d'union
- plus esthétique que les autres alternatives
- semble être largement utilisé dans la partie chemin de l'URI
- clé de chaîne de requête avec un trait d'union dans la nature
- peut-être mieux pour le référencement (cela peut être un mythe)
Souligner
- potentiellement plus facile à gérer pour les langages de programmation
- plusieurs API populaires (Facebook, Netflix, StackExchange, etc.) utilisent des traits de soulignement dans toutes les parties de l'URI.
Je penche vers les soulignés pour tout. Le fait que la plupart des grands joueurs les utilisent est convaincant (voir https://stackoverflow.com/a/608458/360570 ).
hyphenated query string in the wild
. C'est généralement le moment de camelCase.Réponses:
Vous devez utiliser des tirets dans l'URL d'une application Web explorable. Pourquoi? Parce que le tiret sépare les mots (afin qu'un moteur de recherche puisse indexer les mots individuels), et n'est pas un caractère de mot . Le soulignement 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 cela dans Chrome: under_score
Double-cliquez sur cela dans Chrome: trait d'union
Voyez comment Chrome (j'entends Google fait un moteur de recherche aussi) pense seulement que l'un d'entre eux est deux mots?
camelCase
etunderscore
obligent également l'utilisateur à utiliser la shiftclé, alorshyphenated
qu'il ne le fait pas.Donc, si vous devez utiliser des tirets dans une application Web explorable, pourquoi vous embêteriez-vous à faire quelque chose de différent dans une application intranet? Une chose de moins à retenir.
la source
?event_id=1
ou?eventId=1
???La meilleure pratique standard pour les API REST est d'avoir un trait d'union , et non un chameau ou des traits de soulignement.
Cela vient du «REST API Design Rulebook» de Mark Masse d'Oreilly.
De plus, 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
la source
Bien que je recommande les tirets, je postulerai également une réponse qui ne figure pas sur votre liste:
Rien du tout
/quotationrequests/
,/purchaseorders/
etc.?q=foo+bar
la source
En général, cela n'aura pas suffisamment 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, puisqu'il s'agit d'un 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 cadre qui en vaut la peine a déjà une méthode par défaut pour le faire, ou il est assez facile de changer la façon dont il traite les composants d'URL multi-mots, donc je ne m'inquiéterais pas trop.
Cela dit, voici comment je vois les différentes options:
Trait d'union
Souligner
Affaire de chameau
/
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.la source
Réponse courte:
mots en minuscule avec un trait d'union comme séparateur
Longue réponse:
À quoi sert une URL?
Si pointer vers une adresse est la réponse, alors une URL raccourcie fait également du bon travail. Si nous ne facilitons pas la lecture et la maintenance, cela n'aidera pas autant les développeurs que les mainteneurs. Ils représentent une entité sur le serveur, ils doivent donc être nommés logiquement.
Google recommande d'utiliser des tirets
Issu d'une formation en programmation, camelCase est un choix populaire pour nommer des mots communs.
Mais la RFC 3986 définit les URL comme sensibles à la casse pour différentes parties de l'URL. Étant donné que les URL sont sensibles à la casse, le garder discret (minuscule) est toujours sûr et considéré comme un bon standard. Maintenant, cela prend un étui à chameaux par la fenêtre.
Source: https://metamug.com/article/rest-api-naming-best-practices.html#word-delimiters
la source
voici le meilleur des deux mondes.
J'aime aussi "souligne", outre tous vos points positifs à leur sujet, il y a aussi un certain style old-school.
Donc, ce que je fais, c'est utiliser des tirets bas et simplement ajouter une petite règle de réécriture au fichier .htaccess de votre Apache pour réécrire tous les tirets bas dans des tirets.
https://yoast.com/apache-rewrite-dash-underscore/
la source