Jak podano w http://www.boutell.com/newfaq/misc/urllength.html , ciąg zapytania HTTP ma ograniczoną długość. Może być ograniczona przez klienta (Firefox, IE, ...), serwer (Apache, IIS, ...) lub sprzęt sieciowy (aplikacyjna zapora, ...).
Dziś mam ten problem z formularzem wyszukiwania. Opracowaliśmy formularz wyszukiwania z wieloma polami, który jest wysyłany na serwer jako żądanie GET, więc mogę dodać zakładkę do wynikowej strony.
Mamy tak wiele pól, że nasz ciąg zapytania ma 1100 bajtów i mamy zaporę ogniową, która odrzuca żądania HTTP GET z więcej niż 1024 bajtami. Nasz administrator systemu zaleca nam zamiast tego używanie POST, aby nie było żadnych ograniczeń.
Jasne, POST zadziała, ale naprawdę czuję wyszukiwanie jako GET, a nie POST. Więc myślę, że przejrzę nasze nazwy pól, aby upewnić się, że ciąg zapytania nie jest zbyt długi, a jeśli nie mogę, będę pragmatyczny i użyję POST.
Ale czy istnieje błąd w projektowaniu usług RESTful? Jeśli mamy ograniczoną długość żądania GET, jak mogę wysłać duże obiekty do usługi sieciowej RESTful? Na przykład, jeśli mam program, który sprawia, że obliczenia oparte na pliku i chcę, aby zapewnić relaksującego usługa takiego: http://compute.com?content=<base64 file>
. To nie zadziała, ponieważ ciąg zapytania nie ma nieograniczonej długości.
Jestem trochę zdziwiony ...