Kiedy używać parametrów zapytania, a kiedy parametrów macierzy?

90

Parametry zapytania :http://example.com/apples?order=random&color=blue

Parametry macierzy :http://example.com/apples;order=random;color=blue

  1. Kiedy należy używać parametrów zapytania, a kiedy parametrów macierzy?
  2. Dlaczego można używać parametrów macierzowych w środku adresu URL, a parametrów zapytań nie? Na przykład:http://example.com/apples;order=random;color=blue/2006/archive
  3. Jeśli parametry macierzy są nadzbiorem parametrów zapytania, dlaczego nie używać ich cały czas?

Więcej o parametrach macierzy można przeczytać tutaj: http://www.w3.org/DesignIssues/MatrixURIs.html

Gili
źródło

Odpowiedzi:

110

Różnice między parametrami Matrix i parametrami zapytania to znacznie więcej niż tylko konwencja.

Główne różnice to:

  • adresy URL z parametrami zapytania nie będą buforowane przez pośredników / serwery proxy (obecnie)
  • parametry macierzy mogą pojawić się w dowolnym miejscu ścieżki
  • obliczanie względnego URI przebiega inaczej
  • parametry zapytania są generalnie nadużywane w celu dodawania nowych czasowników zamiast używania istniejących metod na zasobach
  • parametry macierzy nie są zasobami, są to aspekty, które pomagają odwołać się do zasobu w przestrzeni informacyjnej, którą trudno jest przedstawić w ramach hierarchii
  • Napisałem to bardziej szczegółowo i z większą liczbą odniesień w zapytaniu vs. parametry macierzy

    bdargan
    źródło
    4
    „adresy URL z parametrami zapytania nie będą zapisywane w pamięci podręcznej odpowiedzi przez pośredników / serwery proxy”. Czy nie jest to kwestia wyłącznie związana z wdrożeniem? W standardzie HTTP nie widzę niczego, co wywołuje takie zachowanie ...
    Gili
    1
    Podsumowując: jeśli to, co mówisz, jest prawdą, dlaczego nie migrowałbyś wszystkich parametrów zapytania do parametrów macierzy?
    Gili
    2
    @Gili nigdy nie powiedział, że zachowanie jest nakazane przez HTTP. z jego artykułu: „Pośrednicy (proxy) nie będą buforować żadnego adresu URL z parametrem zapytania w adresie URL. Dzieje się tak, ponieważ we wczesnych latach istnienia Internetu nie ufali informacjom kontrolnym pamięci podręcznej ze stron generowanych dynamicznie”. Specyfikacje i rzeczywiste praktyki czasami (lub w większości przypadków) różnią się.
    Hendy Irawan,
    6
    Ta odpowiedź jest 1/5 zła. Różnica w stosunku do względnych identyfikatorów URI i możliwości osadzania parametrów w środku ścieżki jest prawdziwa. Wszystkie inne punkty są błędne, ponieważ parametry macierzy będą miały dokładnie ten sam problem, gdy staną się bardziej popularne, więc nie różnią się pod tym względem od parametrów zapytania.
    Gili
    3
    Parametry zapytania @Gill są przydatne przy definiowaniu opcjonalnych parametrów macierzy kryteriów, które są informacjami uzupełniającymi do zmiennej ścieżki. Zobacz to zapytanie URL: localhost / services / api /… matrix: localhost / services / api / movies / actor; name? Limit = 10 Ma większy sens, gdy jest używane jako macierz zamiast zapytania. Ten adres URL dowodzi punktu 5 z bdargan.
    skipy