Z Wikipedii: Uniform Resource Locator
Ścieżka , która zawiera dane, zwykle zorganizowane w formie hierarchicznej , która pojawia się jako sekwencja segmentów oddzielonych ukośnikami.
Opcjonalne zapytanie , oddzielone od poprzedniej części znakiem zapytania (?), Zawierające ciąg zapytania danych niehierarchicznych .
- Zgodnie z koncepcyjnym projektem adresu URL możemy zaimplementować PathParam dla danych hierarchicznych / dyrektyw / komponentów lokalizatora lub zaimplementować QueryParam, gdy dane nie są hierarchiczne. Ma to sens, ponieważ ścieżki są naturalnie uporządkowane, podczas gdy zapytania zawierają zmienne, które można uporządkować dowolnie (nieuporządkowane pary zmienne / wartości).
Poprzedni komentator napisał:
Myślę, że jeśli parametr identyfikuje konkretny byt, powinieneś użyć zmiennej ścieżki.
Inny napisał:
Użyj @PathParam do pobierania na podstawie identyfikatora. Użytkownik @QueryParam dla filtra lub jeśli masz ustaloną listę opcji, które użytkownik może przekazać.
Inne,
Polecam umieszczenie wymaganych parametrów na ścieżce, a wszelkie parametry opcjonalne powinny z pewnością być parametrami ciągu zapytania.
- Można jednak wdrożyć elastyczny, niehierarchiczny system identyfikacji określonych podmiotów! Można mieć wiele unikalnych indeksów w tabeli SQL i pozwolić na identyfikację jednostek za pomocą dowolnej kombinacji pól, która zawiera unikalny indeks! Różne kombinacje (być może również zamawiane inaczej) mogą być użyte w przypadku linków z różnych powiązanych podmiotów (stron odsyłających). W takim przypadku możemy mieć do czynienia z danymi niehierarchicznymi, służącymi do identyfikacji poszczególnych podmiotów - lub w innych przypadkach mogą określać tylko niektóre zmienne / pola - niektóre składniki unikalnych indeksów - i odzyskiwać listę / zestaw rekordów. W takich przypadkach implementacja adresów URL jako QueryParams może być łatwiejsza, bardziej logiczna i rozsądna!
Czy długi łańcuch szesnastkowy może osłabić / zmniejszyć wartość słów kluczowych w pozostałej części ścieżki? To może być warte zastanowić się nad potencjalnymi konsekwencjami SEO umieszczania zmiennych / wartości na ścieżce lub w zapytaniuoraz implikacje dla ludzkiego interfejsu, czy chcemy, aby użytkownicy mogli przeglądać / badać hierarchię adresów URL, edytując zawartość paska adresu. Moja strona 404 nie znaleziona używa zmiennych SSI, aby automatycznie przekierowywać uszkodzone adresy URL do ich rodziców! Roboty wyszukujące mogą również przechodzić przez hierarchię ścieżek. Z drugiej strony osobiście, kiedy udostępniam adresy URL w mediach społecznościowych, ręcznie usuwam wszelkie prywatne unikalne identyfikatory - zwykle przez obcięcie zapytania z adresu URL, pozostawiając tylko ścieżkę: w tym przypadku istnieje pewna użyteczność w umieszczaniu unikalnych identyfikatorów w ścieżce zamiast w zapytaniu. To, czy chcemy ułatwić korzystanie z komponentów ścieżki jako prostego interfejsu użytkownika, może zależy od tego, czy dane / komponenty są czytelne dla człowieka, czy nie. Pytanie o czytelność dla człowieka wiąże się nieco z kwestią hierarchii: często dane, które można wyrazić jako słowa kluczowe czytelne dla człowieka, są również hierarchiczne; podczas gdy dane hierarchiczne często mogą być wyrażone jako słowa kluczowe czytelne dla człowieka. (Same wyszukiwarki mogą być zdefiniowane jako zwiększenie wykorzystania adresów URL jako interfejsu użytkownika.) Hierarchie słów kluczowych lub dyrektyw mogą nie być ściśle uporządkowane, ale zwykle są wystarczająco blisko, abyśmy mogli uwzględnić alternatywne przypadki na ścieżce, ioznacz jedną opcję jako przypadek „kanoniczny” .
Istnieje zasadniczo kilka rodzajów pytań, na które możemy odpowiedzieć za pomocą adresu URL dla każdego żądania:
- Jakiego rodzaju rekordu / rzeczy żądamy / serwujemy?
- Których jesteśmy zainteresowani?
- Jak chcemy prezentować informacje / zapisy?
Pytanie 1 prawie na pewno najlepiej pokrywa ścieżka lub PathParams. Q3 (który jest prawdopodobnie kontrolowany przez zestaw arbitralnie uporządkowanych parametrów opcjonalnych i wartości domyślnych); jest prawie na pewno najlepiej objęty przez QueryParams. Q2: To zależy…