Adres URL wskazuje sam zasób. A „klient” jest zasobem, który może być rozpatrzony, więc powinny być częścią podstawowego adresu URL: /orders/view/client/23
.
Parametry służą tylko do parametryzacji dostępu do zasobu. To przede wszystkim wchodzi w grę ze stanowisk i wyszukiwania: /orders/find?q=blahblah&sort=foo
. Jest to linia w porządku między parametrami i podrzędnych zasobów: /orders/view/client/23/active versus /orders/view/client/23?show=active
. Polecam styl zasobu podrzędnego i rezerwuję parametry do wyszukiwania.
Ponieważ każdy punkt końcowy REprezentuje transfer stanu (w celu zmiany mnemonika), niestandardowe nagłówki powinny być używane tylko w przypadku rzeczy, które nie obejmują nazwy zasobu (adresu URL), stanu zasobu (treści) lub bezpośrednio parametrów wpływające na zasób (parametry). To pozostawia prawdziwe metadane dotyczące żądania niestandardowych nagłówków.
HTTP ma bardzo szeroki wybór nagłówków, które obejmują prawie wszystko, czego potrzebujesz. Tam, gdzie pojawiają się niestandardowe nagłówki, jest to system do żądania systemowego działającego w imieniu użytkownika. System proxy zweryfikuje użytkownika i doda „ X-User: userid
” do nagłówków i użyje poświadczeń systemowych, aby dotrzeć do punktu końcowego. System odbierający sprawdza, czy poświadczenia systemowe są upoważnione do działania w imieniu użytkownika, a następnie sprawdza, czy użytkownik jest upoważniony do wykonania tej czynności.
Niestandardowe nagłówki mają następujące zalety:
źródło
Używałbym niestandardowego nagłówka tylko wtedy, gdy nie ma innego sposobu przekazywania informacji według standardu lub konwencji. Darren102 wyjaśnia typowy sposób przekazywania tej wartości. Twój interfejs API będzie znacznie bardziej przyjazny, jeśli użyjesz typowych zwrotów wzorców i niestandardowych nagłówków, co nie oznacza, że nie będziesz mieć możliwości ich użycia, tylko że powinny one być ostatecznością i czymś, czego nie obsługuje specyfikacja HTTP.
źródło
Uwierzytelnianie: identyfikatory GUID, uwierzytelnianie podstawowe, tokeny niestandardowe itp. Np. Uwierzytelnianie podstawowe z tokenem Guid dla interfejsu REST API zamiast nazwy użytkownika / hasła
Jeśli bierzesz udział w przekazywaniu tokenów lub innych informacji podobnych do uwierzytelniania między domenami objętymi PCI-DSS lub innymi regułami bezpieczeństwa, być może będziesz musiał zakopać parametry, ponieważ niektóre przepisy wyraźnie wymagają, aby elementy uwierzytelniania pozostały z dala od adresów URL, które można by trywialnie odtworzyć (z historie przeglądarek, dzienniki proxy itp.).
źródło
Nie ma standardu dla REST, ale akceptowany sposób byłby
Nieużywanie niestandardowych nagłówków, a zatem widok 23 po zakłada, że jest to identyfikator, dlatego miałbyś funkcję, która pobiera identyfikator, a zatem tworzy tylko te informacje.
źródło
Nie użyłbym niestandardowych nagłówków, ponieważ nie wiesz, czy jakiekolwiek proxy je przekażą. Oparty na adresie URL to droga do zrobienia.
źródło
Zdecydowanie OK:
Też dobrze:
Myślę, że to też byłoby w porządku:
źródło
Możesz użyć niestandardowych nagłówków, aby dołączyć więcej informacji o częściowo przetworzonym żądaniu, biorąc pod uwagę, że kopertowanie nie jest dobrą praktyką. Nagłówki są bezpieczne .
źródło