Jag underhåller en gammal .aspx sida där all data krävs av sidan för att visa att innehållet skickas i URL: en till GET -begäran som en del av frågesträngen. Resultatet av detta är att när vi fortsätter att lägga till funktioner fortsätter webbadressen att bli större.

Jag tänker flytta alla parametrar från frågesträngen till kroppen för GET -begäran.

Är det ett bra designbeslut och vad är användningsfallet för en kropp i GET begäran?

Kommentarer

  • Varför inte bara använda en POST begäran istället?
  • Eftersom jag inte skapar eller uppdaterar någonting. Jag hämtar bara information från servern.
  • Det ' förväntas att GET-förfrågningar är idempotenta: att begära samma URL flera gånger ger dig alltid ett motsvarande resultat. Detta t.ex. möjliggör cachning (som vissa webbläsare och proxyservrar gör mycket aggressivt). Om du flyttar frågeparametrar till begäran, bryter du mot denna förväntan så undvik detta. Du ' förbereder dig för svårt att felsöka problem. Tyvärr har vissa system en URL-längdbegränsning i storleksordningen några KB. Om du fortfarande utformar ditt API och upptäcker att du kommer att hantera mycket komplexa frågor kan ett GraphQL API passa bättre än REST.
  • Förutom vad @amon sa, att sätta en kropp i en GET begäran bryter uttryckligen mot HTTP-specifikationen. Använd POST.
  • @Manya Kommentarerna till detta Stack Overflow-svar diskuterar Elasticsearch lite. Observera att Elasticsearch vanligtvis inte konsumeras direkt av webbläsare utan bara av interna applikationer, så de har lite mer flexibilitet – du har full kontroll över klienten och nätverket.

Svara

GET-förfrågningar med en kropp stöds i HTML-specifikationerna.

Se Stack Overflow-frågan Är detta uttalande korrekt? HTTP GET-metoden har alltid ingen meddelandekropp för en diskussion.

Det är dock ovanligt. Du kommer att överraska människor med den lösningen. Att bara byta till en POST är en bättre idé.

Den enda nackdelen (uppåt?) är irriterande RESTfulness-acolyter.

Kommentarer

  • det finns tekniska nackdelar eftersom många javascript-bibliotek inte ' t stöder GET med en kropp. För databaser där du utför en sökning är det logiskt att göra det på det sättet, men du skulle inte ' t kunna ringa samtalet från en enstaka sida till din ElasticSearch eller SOLR-instans (de enda API: er där jag såg den här kombinationsrutan implementerad).
  • Den här frågan säger samma sak: stackoverflow.com/questions/978061/http-get-with-request-body " Ja. Med andra ord, alla HTTP-förfrågningar meddelande får innehålla en meddelandetext och måste därför analysera meddelanden med det i åtanke antics för GET är dock begränsade så att en kropp, om någon, inte har någon semantisk betydelse för begäran. Kraven på analysering är skilda från kraven på metodsemantik. Så ja, du kan skicka en kropp med GET, och nej, det är aldrig användbart att göra det. " Det faktiska svaret har mer information.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *