Późna odpowiedź, ale dodam trochę więcej wglądu do tego, co zostało udostępnione, a mianowicie, że istnieje kilka rodzajów „parametrów” w żądaniu i należy to wziąć pod uwagę.
- Lokalizatory - np. Identyfikatory zasobów, takie jak identyfikatory lub akcja / widok
- Filtry - np. Parametry, które umożliwiają wyszukiwanie, sortowanie lub zawężanie zestawu wyników.
- Stan - np. Identyfikacja sesji, klucze API, whatevs.
- Treść - np. Dane, które mają być przechowywane.
Teraz spójrzmy na różne miejsca, w których mogą iść te parametry.
- Żądaj nagłówków i plików cookie
- Ciąg zapytania adresu URL (zmienne „GET”)
- Ścieżki URL
- Ciąg zapytania / treść wieloczęściowa (zmienne „POST”)
Zasadniczo chcesz, aby stan był ustawiony w nagłówkach lub plikach cookie, w zależności od rodzaju informacji o stanie. Myślę, że wszyscy możemy się z tym zgodzić. W razie potrzeby użyj niestandardowych nagłówków http (X-My-Header).
Podobnie, Treść ma tylko jedno miejsce, do którego należy przynależność, która znajduje się w treści żądania, jako ciągi zapytania lub jako wieloczęściowy http i / lub treść JSON. Jest to zgodne z tym, co otrzymujesz z serwera, gdy wysyła ci treść. Więc nie powinieneś być niegrzeczny i rób to inaczej.
Lokalizatory takie jak „id = 5” lub „action = refresh” lub „page = 2” powinny mieć postać ścieżki URL, na przykład, gdy mysite.com/article/5/page=2
częściowo wiesz, co każda część powinna oznaczać (podstawy, takie jak artykuł i 5 oczywiście oznacza, że podasz mi dane typu artykuł o id 5), a dodatkowe parametry są określone jako część identyfikatora URI. Mogą mieć postać page=2
lub page/2
jeśli wiesz, że po pewnym punkcie identyfikatora URI „foldery” są sparowanymi klucz-wartościami.
Filtry zawsze trafiają do ciągu zapytania, ponieważ chociaż są one częścią wyszukiwania właściwych danych, służą tylko do zwrócenia podzbioru lub modyfikacji tego, co zwracają Lokalizatory samodzielnie. Wyszukiwanie w mysite.com/article/?query=Obama
(podzestawie) jest filtrem i tak samo jest/article/5?order=backwards
(modyfikacja). Pomyśl o tym, co robi, a nie tylko jak się nazywa!
Jeśli „widok” określa format wyjściowy, to jest to filter ( mysite.com/article/5?view=pdf
), ponieważ zwraca modyfikację znalezionego zasobu, a nie bazuje na tym, którego zasobu chcemy. Jeśli zamiast tego zdecyduje, którą konkretną część artykułu zobaczymy ( mysite.com/article/5/view=summary
), to jest to lokalizator.
Pamiętaj, zawężenie zestawu zasobów jest filtrowaniem. Lokalizowanie czegoś konkretnego w zasobie to lokalizowanie ... duh. Filtrowanie podzbiorów może zwracać dowolną liczbę wyników (nawet 0). Lokalizowanie zawsze znajdzie określone wystąpienie czegoś (jeśli istnieje). Filtrowanie modyfikacji zwróci te same dane co lokalizator, z wyjątkiem zmodyfikowanych (jeśli taka modyfikacja jest dozwolona).
Mam nadzieję, że to pomogło dać ludziom chwile eureki, jeśli zgubili się, gdzie umieścić rzeczy!