Myślnik, podkreślnik lub camelCase jako ogranicznik słów w Uri?

Projektuję API oparte na HTTP dla aplikacji intranetowej. Zdaję sobie sprawę, że to dość mały problem w wielkim schemacie rzeczy, ale: Czy powinienem używać myślników, podkreślników lub camelCase, aby rozgraniczyć słowa w Uri?


Oto moje pierwsze myśli:

CamelCase

  • Możliwe problemy, jeśli serwer jest niewrażliwy na wielkość liter
  • wydaje się mieć dość powszechne zastosowanie w kluczach łańcuchów zapytań ( http://api.example.com? searchQuery =...), ale nie w innych częściach URI

Myślnik

  • bardziej estetyczne niż inne alternatywy
  • Jest to jedna z najbardziej rozpoznawalnych postaci na świecie.]}
  • nigdy nie widziałem podzielonego klucza łańcucha zapytania w dziczy
  • ewentualnie lepsze dla SEO (to może być mit)

Podkreślenie

  • potencjalnie łatwiejsze w programowaniu języki do obsługi
  • kilka popularnych API (Facebook, Netflix, StackExchange, itp.) używają podkreślników we wszystkich częściach URI.

Skłaniam się ku podkreślaniu wszystkiego. Fakt, że większość dużych graczy korzysta z nich jest przekonujący (zobacz https://stackoverflow.com/a/608458/360570).

Author: Community, 2012-04-24

5 answers

Powinieneś używać myślników w indeksowanym adresie URL aplikacji internetowej. Dlaczego? Ponieważ myślnik oddziela słowa (tak, że wyszukiwarka może indeksować poszczególne słowa), a nie jest znakiem słowa . Podkreślenie jest znakiem słowa, co oznacza, że powinno być uważane za część słowa.

Kliknij dwukrotnie w Chrome: camelCase
Kliknij dwukrotnie to w Chrome: under_score
Kliknij dwukrotnie to w Chrome: myślnik-ated

Zobacz jak Chrome (słyszałem, że Google też robi wyszukiwarkę) myślisz, że jedno z nich to dwa słowa?

camelCase i underscore wymagają również od użytkownika użycia klawisza shift , podczas gdy hyphenated nie.

Więc jeśli powinieneś używać myślników w crawlable aplikacji internetowej, dlaczego chcesz robić coś innego w aplikacji intranetowej? Jedna rzecz mniej do zapamiętania.

 308
Author: Neil McGuigan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-03 21:26:45

Standardową najlepszą praktyką dla API REST jest posiadanie myślnika , a nie camelcase lub podkreślenia.

To pochodzi z "REST API Design Rulebook" Marka Masse ' a z Oreilly.

Ponadto należy pamiętać, że sam Stack Overflow używa myślnikó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-actually

 132
Author: Al Sweigart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-19 00:02:37

Podczas gdy polecam myślniki, postuluję również odpowiedź, której nie ma na twojej liście:

Nic W Ogóle

  • API mojej firmy MA URI jak /quotationrequests/, /purchaseorders/ i tak dalej.
  • pomimo, że mówiłeś, że to aplikacja intranetowa, wymieniłeś SEO jako korzyść. Google dopasowuje wzorzec / foobar / w adresie URL dla zapytania ?q=foo+bar
  • i naprawdę mam nadzieję, że nie rozważasz wykonania wywołania PHP na dowolny dowolny ciąg znaków, który użytkownik przekazuje do pasek adresu, jak sugeruje @ServAce85!
 21
Author: Nicholas Shanks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-26 09:15:55

Ogólnie rzecz biorąc, nie będzie to miało wystarczającego wpływu, szczególnie, że jest to aplikacja intranetowa , a nie aplikacja internetowa ogólnego użytku. W szczególności, ponieważ jest to intranet , SEO nie jest problemem, ponieważ twój intranet nie powinien być dostępny dla wyszukiwarek. (a jeśli tak, to nie jest to aplikacja intranetowa).

I każdy framework, który jest wart soli, albo ma już domyślny sposób, aby to zrobić, albo jest dość łatwy do zmiany, jak radzi sobie z komponentami URL z wieloma wyrazami, więc nie martwiłbym się o to zbytnio.

To powiedziawszy, oto jak widzę różne opcje:

Myślnik

  • największym zagrożeniem dla myślników jest to, że ten sam znak (zazwyczaj) jest również używany do odejmowania i negacji numerycznej (tj. minus lub minus ).
  • myślniki czuć niewygodne w komponentach URL. Wydają się mieć sens tylko na końcu adresu URL, aby oddzielić słowa w tytule artykułu. Lub, na przykład, tytuł pytania o przepełnienie stosu, które jest dodawane na końcu adresu URL do celów SEO i przejrzystości użytkownika.

Podkreślenie

  • ponownie czują się źle w komponentach URL. Rozbijają przepływ (i piękno/prostotę) adresu URL, ponieważ zasadniczo dodają dużą, ciężką pozorną przestrzeń w środku czystego, płynącego adresu URL.
  • mają tendencję do wtapiania się w podkreślenia. Jeśli oczekujesz, że użytkownicy skopiują-wkleją Twoje adresy URL do MS Word lub innych podobnych programy do edycji tekstu, lub gdziekolwiek indziej, które mogą podnieść na URL i styl go z podkreślenia (jak linki tradycyjnie są), to może warto unikać podkreślenia jako separatory słów. Szczególnie po wydrukowaniu podkreślony adres URL z podkreślnikami wygląda tak, jakby miał w sobie spacje zamiast podkreślników.

CamelCase

  • zdecydowanie mój ulubiony, ponieważ sprawia, że adresy URL wydają się lepiej przepływać i nie ma żadnych wad że poprzednie dwie opcje zrobić.
  • może być lekko trudniejsze do odczytania dla osób, które mają trudności z odróżnianiem wielkich liter od małych, ale nie powinno to stanowić większego problemu w adresie URL, ponieważ większość "słów" powinna być składnikami URL i oddzielona / tak czy inaczej. Jeśli okaże się, że masz komponent URL, który ma więcej niż 2 "słowa", prawdopodobnie powinieneś spróbować znaleźć lepszą nazwę dla tego pojęcia.
  • It does have a possible problem with case czułość, ale większość platform może być dostosowana tak, aby rozróżniała wielkość liter lub wielkość liter. W każdym razie jest to tylko naprawdę problem dla 2 przypadków: a.) ludzie wpisując adres URL i B.) Programiści (ponieważ nie jesteśmy ludźmi) wpisując adres URL. Literówki są Zawsze problemem, bez względu na wielkość liter, więc nie różni się to niczym od jednego przypadku.
 13
Author: cdeszaq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-31 13:25:43

Oto najlepsze z obu światów.

Ja też "lubię" podkreślenia, oprócz wszystkich twoich pozytywnych punktów na ich temat, jest też pewien staromodny styl.

Więc to, co robię, to używam podkreślników i po prostu dodaję małą regułę przepisywania do Twojego Apache ' a .plik htaccess do ponownego zapisu wszystkich podkreślników do myślników.

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

 1
Author: user2597538,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-09 23:49:17