Sprawdzam, jaki jest prawidłowy sposób przekazywania wielu wartości dla tej samej nazwy parametru w żądaniu GET.
Widziałem takie adresy URL:
http://server/action?id=a&id=b
I widziałem takie adresy URL:
http://server/action?id=a,b
Rozumiem, że pierwsza jest poprawna, ale nie mogę znaleźć na to odniesienia. Spojrzałem na specyfikację http, ale nie widziałem nic o tym, jak należy utworzyć część adresu URL dotyczącą zapytania.
Nie chcę odpowiedzi, która brzmi: „albo jest w porządku” - jeśli tworzę usługę internetową, chcę wiedzieć, która z tych metod jest standardowa, aby osoby korzystające z mojej usługi wiedziały, jak przekazać wiele parametrów o tej samej nazwie.
Czy ktoś może wskazać mi oficjalne źródło informacji, aby potwierdzić, która opcja jest poprawna?
id=a&id=b
jako logicznego AND iid=a,b
jako logicznego OR.?id=5&id=3
. PHP odczyta tutaj tylko jedną wartość dla id. Jeśli dobrze pamiętam, musiałoby to wyglądać tak, aby działało z PHP:?id[]=5&id[]=3
since you are developing the APIs, I suggest you to do what is the easiest for you, since the caller of the API will not have much trouble creating the query string.
id=a,b
przyjmuje założenie, że przecinek,
jest prawidłowym separatorem. Ale wartości parametrów mogą zawierać,
. Następnie klient musi uciec,
w wartościach parametrów zapytania. Ale możesz zdecydować, że;
jest lepiej. Oznacza to, że klient i serwer powinny udostępniać oficjalny ogranicznik dla interfejsu API.id=a&id=b
nie ma tego problemu, mimo że wydłuża adresy URLSugerowałbym sprawdzenie, jak przeglądarki domyślnie obsługują formularze. Na przykład spójrz na element formularza
<select multiple>
i sposób, w jaki obsługuje on wiele wartości z tego przykładu w w3schools.Do użytku w PHP:
Przykład na żywo z góry na w3schools.com
Z góry, jeśli klikniesz „saab, opel” i klikniesz prześlij, wygeneruje wynik cars = saab & cars = opel . Następnie w zależności od serwera zaplecza parametr cars powinien pojawić się jako tablica, którą można dalej przetwarzać.
Mam nadzieję, że pomoże to każdemu, kto szuka bardziej „standardowego” sposobu rozwiązania tego problemu.
źródło