Ik onderhoud een oude .aspx pagina waarin alle gegevens vereist door de pagina om te tonen dat de inhoud wordt doorgegeven in de URL van het GET -verzoek als onderdeel van de querytekenreeks. Het resultaat hiervan is dat, terwijl we functies blijven toevoegen, de URL steeds groter wordt.

Ik denk erover om alle parameters van de queryreeks naar de hoofdtekst van het GET -verzoek te verplaatsen.

Is het een goede ontwerpbeslissing en wat is het gebruik van een body in een GET -verzoek?

Reacties

  • Waarom niet gewoon een POST verzoek gebruiken?
  • Omdat ik niets aan het maken of updaten ben. Ik haal gewoon informatie op van de server.
  • Het ' s verwachtte dat GET-verzoeken idempotent zijn: als je dezelfde URL meerdere keren opvraagt, krijg je altijd een gelijkwaardig resultaat. Dit b.v. staat caching toe (wat sommige browsers en proxys zeer agressief doen). Als u queryparameters naar de hoofdtekst van het verzoek verplaatst, overtreedt u deze verwachting, dus vermijd dit. Je ' stelt jezelf opnieuw in voor moeilijk te debuggen problemen. Helaas hebben sommige systemen een limiet voor de URL-lengte in de orde van grootte van enkele KB. Als je nog steeds je API aan het ontwerpen bent en merkt dat je te maken krijgt met zeer complexe zoekopdrachten, is een GraphQL API wellicht beter geschikt dan REST.
  • Naast wat @amon zei, kun je een body in een GET request is expliciet in strijd met de HTTP-specificatie. Gebruik POST.
  • @Manya De commentaren op dit Stack Overflow-antwoord bespreken Elasticsearch een beetje. Merk op dat Elasticsearch doorgaans niet rechtstreeks door browsers wordt gebruikt, maar alleen door interne applicaties, dus ze hebben een beetje meer flexibiliteit – u heeft volledige controle over de client en het netwerk.

Antwoord

GET-verzoeken met een body worden ondersteund in de HTML-specificaties.

Zie de Stack Overflow-vraag Is deze bewering correct? De HTTP GET-methode heeft altijd geen berichttekst voor een discussie.

Het is echter ongebruikelijk. Je zult mensen verrassen met die oplossing. Gewoon overschakelen naar een POST is een beter idee.

Het enige nadeel (voordeel?) zijn vervelende RESTfulness-acolieten.

Reacties

  • er zijn technische nadelen, aangezien veel javascript-bibliotheken ' t ondersteunt GET met een body. Voor databases waarin u een zoekopdracht uitvoert, is het logisch om dit op die manier te doen, maar u zou ' t kan de aanroep van een app met één pagina naar uw ElasticSearch- of SOLR-instantie (de enige APIs waarin ik deze combo geïmplementeerd zag).
  • Deze vraag zegt hetzelfde: stackoverflow.com/questions/978061/http-get-with-request-body " Ja. Met andere woorden, elk HTTP-verzoek message mag een berichttekst bevatten, en moet dus berichten met dat in gedachten parseren capriolen voor GET zijn echter beperkt, zodat een eventuele body geen semantische betekenis heeft voor het verzoek. De vereisten voor parsing staan los van de vereisten voor methodesemantiek. Dus ja, je kunt een body sturen met GET, en nee, het heeft nooit zin om dat te doen. " Het daadwerkelijke antwoord heeft meer details.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *