Bindestrich, Unterstrich oder camelCase als Worttrennzeichen in URIs?

477

Ich entwerfe eine HTTP-basierte API für eine Intranet-App. Mir ist klar, dass es im großen Schema der Dinge ein ziemlich kleines Problem ist, aber: Problem ist sollte ich Bindestriche, Unterstriche oder camelCase verwenden, um Wörter in den URIs abzugrenzen?


Hier sind meine ersten Gedanken:

camelCase

  • Mögliche Probleme, wenn der Server nicht zwischen Groß- und Kleinschreibung unterscheidet
  • scheint in Abfragezeichenfolgenschlüsseln ( http://api.example.com ? searchQuery = ...) ziemlich weit verbreitet zu sein , aber nicht in anderen URI-Teilen

Bindestrich

  • ästhetischer als die anderen Alternativen
  • scheint im Pfadbereich der URI weit verbreitet zu sein
  • Ich habe noch nie einen getrennten Abfragezeichenfolgenschlüssel in freier Wildbahn gesehen
  • möglicherweise besser für SEO (dies kann ein Mythos sein)

Unterstreichen

  • möglicherweise einfacher für Programmiersprachen zu handhaben
  • Mehrere beliebte APIs (Facebook, Netflix, StackExchange usw.) verwenden in allen Teilen der URI Unterstriche.

Ich neige zu Unterstrichen für alles. Die Tatsache, dass die meisten Big Player sie verwenden, ist überzeugend (siehe https://stackoverflow.com/a/608458/360570 ).

Josh Johnson
quelle
Von allem , was ich gelesen habe, Sie sollten verwenden Bindestriche , aber Unterstrichen scheinen leichter zu verwalten.
ServAce85
1
Ich glaube, dass Bindestriche früher für SEO-Zwecke besser waren. Dies mag jetzt nicht zutreffen, aber so viele Menschen haben es übernommen, dass es allgemein als bewährte Methode akzeptiert wird. Unterstriche hingegen sind bei der Backend-Programmierung möglicherweise einfacher zu handhaben. Ich verwende PHP, daher ist es viel einfacher, einen Unterstrich für einen Funktionsnamen als einen Bindestrich zu verwenden. camelCase ist zwar am einfachsten zu implementieren, aber das Lesen ist oft schwierig. Schließlich denke ich, dass Sie Recht hatten, als Sie sagten, dass Sie nie einen sehen hyphenated query string in the wild. Das ist normalerweise eine Zeit für camelCase.
ServAce85
Nach dieser Frage ist Unterstrich keine gültige Option: stackoverflow.com/questions/3641722/…
wytten
Sie erwähnen beliebte APIs, ich möchte eine hinzufügen: Google. Soweit ich gesehen habe, verwendet Google zwischen den Wörtern überhaupt nichts (siehe beispielsweise die Google Maps Distance Matrix-API).
Nbeuchat

Antworten:

473

Sie sollten Bindestriche in einer crawlbaren Webanwendungs-URL verwenden. Warum? Weil der Bindestrich Wörter trennt (damit eine Suchmaschine die einzelnen Wörter indizieren kann) und kein Wortzeichen ist . Unterstrich ist ein Wortzeichen, dh es sollte als Teil eines Wortes betrachtet werden.

Doppelklicken Sie in Chrome: camelCase.
Doppelklicken Sie in Chrome: under_score.
Doppelklicken Sie in Chrome: mit Bindestrich

Sehen Sie, wie Chrome (ich höre, dass Google auch eine Suchmaschine erstellt) nur eines dieser beiden Wörter denkt?

camelCaseund underscoreauch den Benutzer auffordern , die verwenden shiftSchlüssel, während hyphenateddies nicht tut.

Wenn Sie also Bindestriche in einer crawlbaren Webanwendung verwenden sollten, warum sollten Sie dann in einer Intranetanwendung etwas anderes tun? Eine Sache weniger, an die man sich erinnern sollte.

Neil McGuigan
quelle
20
Mein Firefox 24 unter Windows 7 glaubt, dass "Bindestrich" zwei Wörter sind.
Marcel Stör
9
und es verhält sich genauso für 'under_score'.
Marcel Stör
18
eine Konvention für den queryString, zum Beispiel ?event_id=1oder ?eventId=1???
user2727195
8
@ user2727195 Obwohl bei URLs zwischen Groß- und Kleinschreibung unterschieden wird, empfiehlt es sich, nach Möglichkeit Kleinbuchstaben zu verwenden, da dadurch die Möglichkeit einer fehlerhaften Eingabe ausgeschlossen wird.
Nicholas Shanks
7
Interaktive Antwort :)
wild_nothing
210

Die Standard-Best Practice für REST-APIs besteht darin, einen Bindestrich zu verwenden , keinen Camelcase oder Unterstrich.

Dies stammt aus Mark Masses "REST API Design Rulebook" von Oreilly.

Beachten Sie außerdem, dass der Stapelüberlauf selbst Bindestriche in der URL verwendet: .../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris

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

Al Sweigart
quelle
3
Wenn Sie sich das Kapitel über Richtlinien für Abfragezeichenfolgen im REST API Design Rulebook ansehen, werden Sie feststellen, dass die Richtlinien je nach Regelteil variieren. Es gibt keine explizite Regel zum Umschließen von Abfragezeichenfolgen, aber Sie werden feststellen, dass alle Beispiele im Abschnitt zu Abfragezeichenfolgen alle Schlüssel in Kamel-Groß- und Kleinschreibung enthalten.
Michael Lang
1
Nur zu Ihrer Information - "REST API Design Rulebook" wurde im Oktober 2011 veröffentlicht. Möglicherweise haben sich die Dinge in den letzten 8 Jahren geändert.
ChrisN
25

Während ich Bindestriche empfehlen, werde ich auch eine Antwort postulieren , die nicht auf der Liste ist:

Gar nichts

  • Die API meines Unternehmens hat URIs wie /quotationrequests/ , /purchaseorders/und so weiter.
  • Obwohl Sie sagten, es sei eine Intranet-App, haben Sie SEO als Vorteil aufgeführt. Google stimmt mit dem Muster / foobar / in einer URL für eine Abfrage von überein?q=foo+bar
  • Ich hoffe wirklich, dass Sie nicht in Betracht ziehen, einen PHP-Aufruf an eine beliebige Zeichenfolge auszuführen, die der Benutzer an die Adressleiste übergibt, wie @ ServAce85 vorschlägt!
Nicholas Shanks
quelle
+1 für den Hinweis auf eine offensichtliche Wahl. Es unterscheidet auch / quotationrequests / von / quote / request /.
Josh Petitt
34
Das Schlechte an dieser Antwort ist, dass eine Maschine aus SEO-Sicht nicht verstehen kann, wo ein Wort endet und ein anderes beginnt, sodass diese Informationen verloren gehen. Es ist auch schwer für menschliche Leser. Es ist besser, einige Trennzeichen auf Wortebene zu haben als nichts.
Al Sweigart
3
@AlSweigart SEO ist nicht relevant, da dies eine Intranet-Anwendung hinter einer Login-Wand ist.
Nicholas Shanks
2
Ich stimme @ niel-mcguigan zu, dass es eine Sache weniger ist, sich daran zu erinnern, obwohl dies eine Intranet-App ist, wenn Sie überall Bindestriche verwenden.
Drew Goodwin
2
@DrewGoodwin Fair genug. Beachten Sie jedoch, dass ich "Postulat" und nicht "Empfehlung" gesagt habe :-) Und Domains enthalten normalerweise keine Bindestriche. Daher ist die Verwendung in Pfaden bereits eine weitere Sache, an die Sie sich erinnern sollten.
Nicholas Shanks
18

Im Allgemeinen wird es nicht genug Auswirkungen haben, um sich Sorgen zu machen, zumal es sich um eine Intranet- App und nicht um eine allgemein verwendete Internet-App handelt. Da es sich um ein Intranet handelt , ist SEO kein Problem, da Ihr Intranet für Suchmaschinen nicht zugänglich sein sollte. (und wenn ja, ist es keine Intranet-App).

Und jedes Framework, das es wert ist, gesalzen zu werden, hat entweder bereits eine Standardmethode, oder es ist ziemlich einfach zu ändern, wie es mit URL-Komponenten mit mehreren Wörtern umgeht, sodass ich mir darüber keine allzu großen Sorgen machen würde.

Das heißt, hier ist, wie ich die verschiedenen Optionen sehe:

Bindestrich

  • Die größte Gefahr für Bindestriche besteht darin, dass dasselbe Zeichen (normalerweise) auch für die Subtraktion und numerische Negation (dh Minus oder Negativ ) verwendet wird.
  • Bindestriche fühlen sich in URL-Komponenten unangenehm an. Sie scheinen nur am Ende einer URL sinnvoll zu sein, um Wörter im Titel eines Artikels zu trennen. Oder zum Beispiel den Titel einer Stapelüberlauffrage, die aus Gründen der Suchmaschinenoptimierung und der Klarheit der Benutzer am Ende einer URL hinzugefügt wird.

Unterstreichen

  • Auch hier fühlen sie sich in URL-Komponenten falsch. Sie unterbrechen den Fluss (und die Schönheit / Einfachheit) einer URL, da sie im Wesentlichen einen großen, schweren scheinbaren Raum in der Mitte einer sauberen, fließenden URL hinzufügen.
  • Sie neigen dazu, sich in Unterstreichungen einzufügen. Wenn Sie erwarten, dass Ihre Benutzer Ihre URLs kopieren und in MS Word oder andere ähnliche Textbearbeitungsprogramme einfügen, oder an einer anderen Stelle, an der eine URL möglicherweise aufgegriffen und mit einer Unterstreichung versehen wird (wie dies bei herkömmlichen Links der Fall ist), möchten Sie dies möglicherweise Vermeiden Sie Unterstriche als Worttrennzeichen. Insbesondere beim Drucken sieht eine unterstrichene URL mit Unterstrichen so aus, als ob sie Leerzeichen anstelle von Unterstrichen enthält.

CamelCase

  • Bei weitem mein Favorit, da dadurch die URLs besser zu fließen scheinen und keiner der Fehler der beiden vorherigen Optionen vorliegt.
  • Kann für Personen, die Schwierigkeiten haben, Groß- und Kleinschreibung zu unterscheiden , etwas schwieriger zu lesen sein, aber dies sollte in einer URL kein großes Problem darstellen, da die meisten "Wörter" URL-Komponenten sein sollten und /sowieso durch eine getrennt werden . Wenn Sie feststellen, dass Sie eine URL-Komponente haben, die länger als 2 "Wörter" ist, sollten Sie wahrscheinlich versuchen, einen besseren Namen für dieses Konzept zu finden.
  • Es gibt möglicherweise ein Problem mit der Groß- und Kleinschreibung, aber die meisten Plattformen können so angepasst werden, dass zwischen Groß- und Kleinschreibung unterschieden wird. Es ist nur in zwei Fällen wirklich ein Problem: a.) Menschen, die die URL eingeben, und b.) Programmierer (da wir keine Menschen sind), die die URL eingeben. Tippfehler sind immer ein Problem, unabhängig von der Groß- und Kleinschreibung nicht anders als alle ein Fall.
cdeszaq
quelle
13
Nicht zustimmen. Schauen Sie sich SO an, schauen Sie sich alle WordPress-Sites an, schauen Sie sich die meisten News-Sites an, alle verwenden Bindestriche. Auch Kamel Fall mischt Fälle, das Web sollte meiner Meinung nach alle Kleinbuchstaben sein.
Fabien Warniez
4
Meiner Meinung nach sollte das Web eigentlich nicht zwischen Groß- und Kleinschreibung unterscheiden. In Bezug auf die Konvention würden Sie Unterstriche verwenden, wenn Sie dem Ansatz der RoR-Routen (Ruby on Rails) folgen. Normalerweise tue ich dies, um es über Schienen generierte Routen und meine benannten Routen konsistent zu halten. Trotzdem denke ich, dass Dash für mich besser liest als Unterstriche.
RPBaltazar
1
Vielleicht haben sie eine interne Suchmaschine in ihrem Intranet?
Juha Untinen
3
Nicht zustimmen. Ihre beiden Argumente gegen Bindestriche sind fehlerhaft. Es besteht keine Gefahr einer Negation oder Subtraktion, da es sich hier um den Namensteil eines Tupels handelt. Sie sollten niemals den Namensteil eines Tupels für Mathematik oder Negation funktionieren oder bewerten. Es ist auch nicht unangenehm, Bindestriche in URIs zu verwenden, da dies eine langjährige Best Practice ist, die von einem Mangel an gut etablierten Websites verwendet wird. Sie müssen auch nicht die Umschalttaste drücken und werden von praktisch jedem als Wortgrenze behandelt.
tpartee
2
Soweit ich mich erinnern kann, waren Bindestriche die am häufigsten verwendete Norm in URLs und werden in den heutigen Standards definitiv als Best Practice angesehen. Ich benutze sie nicht, weil mir das Gefühl unangenehm erscheint.
Pistole-Pete
2

Kurze Antwort:

Wörter in Kleinbuchstaben mit einem Bindestrich als Trennzeichen

Lange Antwort:

Was ist der Zweck einer URL?

Wenn das Zeigen auf eine Adresse die Antwort ist, leistet auch eine verkürzte URL gute Arbeit. Wenn wir das Lesen und Verwalten nicht einfach machen, hilft es Entwicklern und Betreuern nicht gleichermaßen. Sie stellen eine Entität auf dem Server dar, daher müssen sie logisch benannt werden.

Google empfiehlt die Verwendung von Bindestrichen

Erwägen Sie die Verwendung von Interpunktion in Ihren URLs. Die URL http://www.example.com/green-dress.html ist für uns viel nützlicher als http://www.example.com/greendress.html . Wir empfehlen, in Ihren URLs Bindestriche (-) anstelle von Unterstrichen (_) zu verwenden.

CamelCase hat einen Programmierhintergrund und ist eine beliebte Wahl für die Benennung gemeinsamer Wörter.

Aber RFC 3986 werden URLs jedoch für verschiedene Teile der URL als Groß- und Kleinschreibung definiert. Da URLs zwischen Groß- und Kleinschreibung unterscheiden, ist es immer sicher, sie zurückhaltend zu halten (in Kleinbuchstaben) und wird als guter Standard angesehen. Das nimmt einen Kamelkoffer aus dem Fenster.

Quelle: https://metamug.com/article/rest-api-naming-best-practices.html#word-delimiters

Sorter
quelle
-1

Hier ist das Beste aus beiden Welten.

Ich "mag" auch Unterstriche, neben all Ihren positiven Punkten über sie, gibt es auch einen bestimmten Old-School-Stil zu ihnen.

Ich verwende also Unterstriche und füge einfach eine kleine Umschreiberegel zur .htaccess-Datei Ihres Apache hinzu, um alle Unterstriche in Bindestriche zu schreiben.

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

user2597538
quelle