Czy są jakieś powody, dla których nie powinienem używać gwiazdki ( *
) w adresie URL?
Tło:
Za pomocą gwiazdek mogę podać te ładne i przyjazne (lub jak myślisz?) Adresy URL:
example.com/some/folder/search-phrase*
oznacza wyszukiwanie stron o nazwach rozpoczynających się od „fraza wyszukiwania”, znajdujących się w / some / folder / .example.com/some/**/*search-phrase*
oznacza wyszukiwanie dowolnej strony z „wyszukiwanym wyrażeniem” w dowolnym miejscu w jej nazwie .example.com/some/folder/*
oznacza listę wszystkich stron w / some / folder / (zamiast pokazywania strony / some / folder / index) .
Odpowiedzi:
O użyciu Asterix w adresach URL
Używanie Asterix w adresie URL prawdopodobnie nie jest tak dobrym pomysłem, głównie dlatego, że:
O użyciu gwiazdek w adresach URL
Używanie gwiazdki (*) w adresie URL (i tak, wiem, że to właśnie miałeś na myśli przez cały czas) również nie jest świetnym pomysłem. Ponieważ jest postacią zarezerwowaną, nie jest używana nigdzie indziej; nawet jeśli schemat adresów URL wydaje się przyjazny dla użytkownika, niewielu pomyśli o wypróbowaniu go i prawdopodobnie przyniesie nieprzewidywalne wyniki, ponieważ znaczenie symboli wieloznacznych w adresach URL jest trudne do rozpoznania. (Nie mogłem powiedzieć, co oznaczają wszystkie twoje przykłady, dopóki nie przeczytam twoich opisów).
Nie tylko to, ale mogą istnieć bardziej semantyczne / znaczące sposoby robienia tego, co opisujesz. Na przykład możesz dołączyć ciąg zapytania i użyć zmiennej „find” i „where”, aby powiedzieć swojej metodzie, gdzie znaleźć:
Znajdź strony zaczynające się od „fraza wyszukiwania” w
/some/folder/
:example.com/some/folder/?find=search-phrase&where=start
Znajdź strony z „wyszukiwaną frazą” w dowolnym miejscu:
example.com/some/?find=search-phrase&where=anywhere
Aby wyświetlić wszystkie strony, użyłbym osobnej metody o nazwie „wszystkie” zamiast ciągu zapytania lub składni ze znakiem zastępczym:
example.com/some/folder/all
Składnia ciągu zapytania jest znacznie bardziej powszechna niż gwiazdki - spójrz na pasek adresu przy następnym wyszukiwaniu w Google, na przykład - i prawdopodobnie łatwiej będzie również napisać kod.
Wreszcie, jeśli nie podoba ci się wygląd ciągów zapytań, możesz wstawić nazwę metody o nazwie „szukaj”, a następnie użyć dwóch kolejnych bloków jako zmiennych „znajdź” i „gdzie”. np. zamiast:
example.com/some/folder/?find=search-phrase&where=start
Możesz mieć:
example.com/some/folder/search/search-phrase/start
Następnie wystarczy sprawdzić słowo kluczowe „szukaj” w ścieżce adresu URL i uruchomić metodę wyszukiwania, używając dwóch kolejnych segmentów ścieżki jako zmiennych.
AKTUALIZACJA: Dziś znalazłem swoją pierwszą gwiazdkę w adresie URL. Nowy interfejs archive.org używa go dokładnie tak, jak opisano (w ramach funkcji wyszukiwania), zamiast słowa kluczowego „wszystko”. na przykład:
http://wayback.archive.org/web/*/http://google.com
zamiast
http://web.archive.org/web/20040214050058/http://www.google.com/
Pierwszy przykład zwraca zarchiwizowane wykazy ze wszystkich dat dla google.com, a nie tylko strony z określonej daty (drugi przykład). Co ciekawe, nie mogę tutaj link do strony aktywnej, ponieważ witryna Stack Exchange koduje
*
znak tak, jak%2a
pojawia się on w adresach URL, co powoduje 404 z archive.org. (Być może kolejny powód, aby nie używać gwiazdek w adresach URL).Nadal uważam, że nie jest to tak jasne, jak „wszystko”, ale jeśli szukasz przykładów innych witryn, które stosują gwiazdki w swoich adresach URL, to jest to pierwszy, jaki widziałem.
źródło
Tak, ponieważ jest to zarezerwowana postać.
Stąd: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html
EDYTOWAĆ:
Stąd: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications
źródło
*
jest postacią zarezerwowaną, tak. Ale jest to ogranicznik podrzędny , a kiedy czytam specyfikację URI, wydaje mi się, że można stosować podzapresory w sposób specyficzny dla aplikacji w komponencie ścieżki URI . - Czy to nie znaczy, że jest OK, aby użytku*
(a także np@
,:
,+
,,
) w drodze zrobiłem?