Utrzymuję starą stronę .aspx, na której wszystkie dane strona wymagana do wyświetlenia treści jest przekazywana w adresie URL żądania GET jako część ciągu zapytania. W rezultacie w miarę dodawania funkcji adres URL staje się coraz większy.

Myślę o przeniesieniu wszystkich parametrów z ciągu zapytania do treści żądania GET.

Czy to dobra decyzja projektowa i jaki jest przypadek użycia treści w żądaniu GET?

Komentarze

  • Dlaczego zamiast tego po prostu nie użyć żądania POST?
  • Ponieważ niczego nie tworzę ani nie aktualizuję. Po prostu pobieram informacje z serwera.
  • Spodziewamy się, że ' żądania GET są idempotentne: wielokrotne żądanie tego samego adresu URL zawsze daje równoważny wynik. To np. pozwala na buforowanie (co niektóre przeglądarki i serwery proxy robią bardzo agresywnie). Jeśli przenosisz parametry zapytania do treści żądania, naruszasz to oczekiwanie, więc unikaj tego. ' konfigurujesz się na trudne do debugowania problemy. Niestety, niektóre systemy mają limit długości adresu URL rzędu kilku KB. Jeśli nadal projektujesz swoje API i stwierdzisz, że będziesz radzić sobie z bardzo złożonymi zapytaniami, GraphQL API może być lepszym rozwiązaniem niż REST.
  • Oprócz tego, co powiedział @amon, umieszczenie treści w GET żądanie wyraźnie narusza specyfikację HTTP. Użyj POST.
  • @Manya Komentarze do tej odpowiedzi na temat przepełnienia stosu omawiają nieco Elasticsearch. Zwróć uwagę, że Elasticsearch nie jest zwykle używany bezpośrednio przez przeglądarki, ale tylko przez aplikacje wewnętrzne, więc mają nieco większą elastyczność – masz pełną kontrolę nad klientem i siecią.

Odpowiedź

Żądania GET z treścią obsługiwane w specyfikacji HTML.

Zobacz pytanie dotyczące przepełnienia stosu Czy to stwierdzenie jest poprawne? Metoda HTTP GET zawsze nie ma treści wiadomości do dyskusji.

Jest to jednak niezwykłe. Zaskoczysz ludzi takim rozwiązaniem. Po prostu przełączenie się na POST jest lepszym pomysłem.

Jedynym minusem (zaletą?) są irytujący akolici RESTfulness.

Komentarze

  • są wady techniczne, ponieważ wiele bibliotek javascript nie ma ' t obsługuje GET z treścią. W przypadku baz danych, w których przeprowadzasz wyszukiwanie, logiczne jest zrobienie tego w ten sposób, ale nie ' t być w stanie wykonać wywołanie z pojedynczej strony aplikacji do instancji ElasticSearch lub SOLR (jedyne interfejsy API, w których widziałem zaimplementowane to combo).
  • To pytanie mówi to samo: stackoverflow.com/questions/978061/http-get-with-request-body " Tak. Innymi słowy, każde żądanie HTTP wiadomość może zawierać treść wiadomości i dlatego musi analizować wiadomości mając to na uwadze Serwer sem wybryki dla GET są jednak ograniczone w taki sposób, że treść, jeśli istnieje, nie ma znaczenia semantycznego dla żądania. Wymagania dotyczące analizowania są niezależne od wymagań dotyczących semantyki metod. Więc tak, możesz wysłać treść za pomocą GET i nie, nigdy nie jest to przydatne. " Właściwa odpowiedź zawiera więcej szczegółów.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *