Udržuji starou .aspx stránku, na které jsou všechna data stránka vyžadovaná k zobrazení obsahu je předána v URL požadavku GET jako součást řetězce dotazu. Výsledkem toho je, že jak neustále přidáváme funkce, URL se stále zvětšuje.

Mám na mysli přesun všech parametrů z řetězce dotazu do těla požadavku GET.

Je to dobré designové rozhodnutí a jaký je případ použití těla v GET požadavku?

Komentáře

  • Proč jednoduše nepoužít místo toho POST požadavek?
  • Protože nic nevytvářím ani neaktualizuji. Právě načítám informace ze serveru.
  • Očekává se ', že požadavky GET jsou idempotentní: opakované žádosti o stejnou adresu URL vám vždy přinesou ekvivalentní výsledek. Toto např. umožňuje ukládání do mezipaměti (což některé prohlížeče a proxy dělají velmi agresivně). Pokud přesunete parametry dotazu do těla požadavku, porušujete toto očekávání, proto se tomu prosím vyhněte. ' se znovu nastavujete na obtížné ladění problémů. Některé systémy mají bohužel limit délky URL v řádu několika kB. Pokud stále navrhujete své API a zjistíte, že se budete zabývat velmi složitými dotazy, může být GraphQL API vhodnější než REST.
  • Kromě toho, co řekl @amon, uvedení těla do GET požadavek výslovně porušuje specifikaci HTTP. Použijte POST.
  • @Manya Komentáře k této odpovědi na přetečení zásobníku trochu diskutují o Elasticsearch. Elasticsearch obvykle nespotřebovávají přímo prohlížeče, ale pouze interní aplikace, takže mají o něco větší flexibilitu – máte plnou kontrolu nad klientem a sítí.

Odpověď

Požadavky GET s tělem jsou podporovány ve specifikacích HTML.

Viz otázka Přetečení zásobníku Je toto tvrzení správné? Metoda HTTP GET nemá vždy žádné tělo zprávy pro diskusi.

Je to však neobvyklé. Tímto řešením lidi překvapíte. Lepší nápad je jednoduše přepnout na POST.

Jedinou nevýhodou (vzhůru?) jsou otravní akolytové RESTfulness.

Komentáře

  • existují technické nevýhody, protože mnoho knihoven javascriptů ' t nepodporuje GET s tělem. U databází, kde provádíte vyhledávání, má logický smysl to udělat tímto způsobem, ale ' nebudu moci volat z jednostránkové aplikace do vaší instance ElasticSearch nebo SOLR (jediné API, kde jsem viděl implementovanou tuto kombinaci).
  • Tato otázka říká totéž: stackoverflow.com/questions/978061/http-get-with-request-body " Ano. Jinými slovy, jakýkoli požadavek HTTP zpráva může obsahovat tělo zprávy, a proto musí analyzovat zprávy s ohledem na tuto skutečnost dovádění pro GET je však omezeno tak, že tělo, pokud existuje, nemá pro požadavek žádný sémantický význam. Požadavky na syntaktickou analýzu jsou oddělené od požadavků na sémantiku metody. Takže ano, můžete poslat tělo pomocí GET, a ne, nikdy to není užitečné. " Skutečná odpověď má více podrobností.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *