Jeg vedligeholder en gammel .aspx side, hvor alle data krævet af siden for at vise indholdet sendes i URLen til GET anmodningen som en del af forespørgselsstrengen. Resultatet af dette er, at mens vi fortsætter med at tilføje funktioner, bliver URLen stadig større.

Jeg overvejer at skifte alle parametrene fra forespørgselsstrengen til kroppen i GET anmodningen.

Er det en god designbeslutning, og hvad er brugen af en krop i GET anmodning?

Kommentarer

  • Hvorfor ikke bare bruge en POST anmodning i stedet?
  • Fordi jeg ikke opretter eller opdaterer noget. Jeg henter bare info fra serveren.
  • Det ' forventes, at GET-anmodninger er idempotente: At bede om den samme URL flere gange giver dig altid et tilsvarende resultat. Dette f.eks. muliggør caching (som nogle browsere og proxyer gør meget aggressivt). Hvis du flytter forespørgselsparametre til anmodningens organ, overtræder du denne forventning, så undgå dette. Du ' er ved at indstille dig selv til problemer, der er svære at fejle. Desværre har nogle systemer en URL-længdegrænse i størrelsesordenen nogle få KB. Hvis du stadig designer din API og finder ud af, at du vil håndtere meget komplekse forespørgsler, kan en GraphQL API muligvis være en bedre pasform end REST.
  • Ud over hvad @amon sagde, sætter en krop i en GET anmodning er udtrykkeligt i strid med HTTP-specifikationen. Brug POST.
  • @Manya Kommentarerne til dette Stack Overflow-svar diskuterer elastiksøgning lidt. Bemærk, at Elasticsearch typisk ikke forbruges direkte af browsere, men kun af interne applikationer, så de har lidt mere fleksibilitet – du har fuld kontrol over klienten og netværket.

Svar

GET-anmodninger med et organ understøttes i HTML-specifikationerne.

Se Stack Overflow-spørgsmålet Er dette udsagn korrekt? HTTP GET-metoden har altid ingen beskedtekst til en diskussion.

Det er dog usædvanligt. Du vil overraske folk med den løsning. Det er bare en bedre idé at skifte til en POST.

Den eneste ulempe (opad?) er irriterende RESTfulness-acolytter.

Kommentarer

  • der er tekniske ulemper, da mange javascript-biblioteker ikke ' t understøtter GET med et body. For databaser, hvor du udfører en søgning, er det logisk at gøre det på den måde, men du ville ikke ' t være i stand til at foretage opkaldet fra en enkelt side-app til din ElasticSearch eller SOLR-forekomst (de eneste APIer, hvor jeg så denne kombinationsboks implementeret).
  • Dette spørgsmål siger det samme: stackoverflow.com/questions/978061/http-get-with-request-body " Ja. Med andre ord, enhver HTTP-anmodning meddelelse har tilladelse til at indeholde en meddelelsesdel og skal derfor analysere meddelelser med det i tankerne antics for GET er dog begrænset således, at et organ, hvis det er nogen, ikke har nogen semantisk betydning for anmodningen. Kravene til parsing er adskilt fra kravene til metodesemantik. Så ja, du kan sende en krop med GET, og nej, det er aldrig nyttigt at gøre det. " Det egentlige svar har flere detaljer.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *