Projektuję oparty na HTTP interfejs API dla aplikacji intranetowej. Zdaję sobie sprawę, że jest to niewielki problem w wielkim schemacie rzeczy, ale: czy powinienem używać łączników, znaków podkreślenia lub camelCase do ograniczania słów w identyfikatorach URI?
Oto moje początkowe przemyślenia:
camelCase
- możliwe problemy, jeśli serwer nie rozróżnia wielkości liter
- wydaje się, że ma dość powszechne zastosowanie w kluczach ciągu zapytania ( http://api.example.com ? searchQuery = ...), ale nie w innych częściach URI
Łącznik
- bardziej estetycznie niż inne alternatywy
- wydaje się być szeroko stosowany w części ścieżki URI
- nigdy nie widziałem klucza ciągu zapytania z łącznikiem w stanie dzikim
- być może lepiej dla SEO (może to być mit)
Podkreślać
- potencjalnie łatwiejsze w obsłudze języki programowania
- kilka popularnych interfejsów API (Facebook, Netflix, StackExchange itp.) używa podkreślników we wszystkich częściach identyfikatora URI.
Skłaniam się do podkreślenia wszystkiego. Fakt, że większość dużych graczy z nich korzysta, jest przekonujący (patrz https://stackoverflow.com/a/608458/360570 ).
hyphenated query string in the wild
. Zazwyczaj jest to czas na camelCase.Odpowiedzi:
W indeksowanym adresie URL aplikacji internetowej należy używać łączników. Dlaczego? Ponieważ myślnik oddziela słowa (aby wyszukiwarka mogła indeksować poszczególne słowa), a nie jest słowem . Podkreślenie to znak słowny, co oznacza, że należy go traktować jako część słowa.
Kliknij dwukrotnie w Chrome: camelCase
Kliknij dwukrotnie w Chrome: under_score
Kliknij dwukrotnie w Chrome: dzielenie wyrazów
Widzisz, jak Chrome (słyszę, że Google również tworzy wyszukiwarkę) uważa, że tylko jedno z tych słów to dwa słowa?
camelCase
aunderscore
także wymagać od użytkownika użycia shiftklucza, podczashyphenated
gdy nie.Więc jeśli miałbyś używać łączników w przeszukiwalnej aplikacji internetowej, dlaczego miałbyś zawracać sobie głowę robieniem czegoś innego w aplikacji intranetowej? Jeszcze jedna rzecz do zapamiętania.
źródło
?event_id=1
lub?eventId=1
???Standardową najlepszą praktyką dla interfejsów API REST jest posiadanie łącznika , a nie wielbłąda lub podkreślników.
Pochodzi z „REST API Design Rulebook” Marka Masse z Oreilly.
Ponadto zauważ, że sam Przepełnienie stosu używa łączników w adresie URL:
.../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris
Podobnie jak WordPress: http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-to-know-to-program-not-that-much-actally
źródło
Chociaż polecam łączniki, postuluję również odpowiedź, której nie ma na twojej liście:
W ogóle nic
/quotationrequests/
,/purchaseorders/
i tak dalej.?q=foo+bar
źródło
Ogólnie rzecz biorąc, nie będzie miał wystarczającego wpływu, aby się martwić, zwłaszcza, że jest to aplikacja intranetowa, a nie aplikacja internetowa ogólnego zastosowania. W szczególności, ponieważ jest to intranet , SEO nie stanowi problemu, ponieważ Twój intranet nie powinien być dostępny dla wyszukiwarek. (a jeśli tak, to nie jest to aplikacja intranetowa).
A każda platforma warta swojej soli albo ma już domyślny sposób, aby to zrobić, albo dość łatwo jest zmienić sposób, w jaki radzi sobie z wielosłowowymi składnikami URL, więc nie martwiłbym się tym zbytnio.
To powiedziawszy, oto jak widzę różne opcje:
Łącznik
Podkreślać
CamelCase
/
tak czy inaczej . Jeśli okaże się, że masz składnik adresu URL o długości przekraczającej 2 „słowa”, prawdopodobnie powinieneś spróbować znaleźć lepszą nazwę dla tego pojęcia.źródło
Krótka odpowiedź:
małe litery z łącznikiem jako separatorem
Długa odpowiedź:
Jaki jest cel adresu URL?
Jeśli wskazanie adresu jest odpowiedzią, skrócony adres URL również wykonuje dobrą robotę. Jeśli nie ułatwimy czytania i utrzymania, nie pomoże to zarówno programistom, jak i opiekunom. Reprezentują one jednostkę na serwerze, więc muszą być nazwane logicznie.
Google zaleca używanie łączników
Pochodzący z podstaw programowania, camelCase jest popularnym wyborem do nazywania wspólnych słów.
Ale RFC 3986 definiuje adresy URL jako uwzględniające wielkość liter dla różnych części adresu URL. Ponieważ w adresach URL rozróżniana jest wielkość liter, zachowanie małych liter (małe litery) jest zawsze bezpieczne i uważane za dobry standard. Teraz to wyjmuje futerał z wielbłąda przez okno.
Źródło: https://metamug.com/article/rest-api-naming-best-practices.html#word-delimiters
źródło
oto najlepsze z obu światów.
Lubię też „podkreślenia”, oprócz wszystkich twoich pozytywnych punktów na ich temat, jest też pewien oldschoolowy styl.
Więc używam podkreślników i po prostu dodaj małą regułę przepisywania do pliku .htaccess twojego Apache, aby ponownie zapisać wszystkie podkreślenia do łączników.
https://yoast.com/apache-rewrite-dash-underscore/
źródło