Jeg vedlikeholder en gammel .aspx -side der alle dataene som kreves av siden for å vise at innholdet sendes i URL-en til GET forespørselen som en del av spørringsstrengen. Resultatet av dette er at, mens vi fortsetter å legge til funksjoner, blir URL-en stadig større.

Jeg tenker på å flytte alle parametrene fra spørringsstrengen til kroppen til GET -forespørselen.

Er det en god designbeslutning, og hva er bruken av en kropp i GET forespørsel?

Kommentarer

  • Hvorfor ikke bare bruke en POST forespørsel i stedet?
  • Fordi jeg ikke lager eller oppdaterer noe. Jeg henter bare informasjon fra serveren.
  • Det ' forventes at GET-forespørsler er idempotente: å be om samme URL flere ganger gir deg alltid et tilsvarende resultat. Dette f.eks. tillater caching (som noen nettlesere og fullmakter gjør veldig aggressivt). Hvis du flytter spørsmålsparametere til forespørselen, bryter du denne forventningen, så unngå dette. Du ' setter deg opp for problemer som er vanskelig å feilsøke. Dessverre har noen systemer en URL-lengdegrense i størrelsesorden noen få KB. Hvis du fremdeles designer API-en din og finner ut at du vil håndtere svært komplekse spørsmål, kan en GraphQL API passe bedre enn REST.
  • I tillegg til det @amon sa, satte en kropp i en GET forespørsel er i strid med HTTP-spesifikasjonen. Bruk POST.
  • @Manya Kommentarene til dette Stack Overflow-svaret diskuterer Elasticsearch litt. Vær oppmerksom på at Elasticsearch vanligvis ikke konsumeres direkte av nettlesere, men bare av interne applikasjoner, så de har litt mer fleksibilitet – du har full kontroll over klienten og nettverket.

Svar

GET-forespørsler med en kropp støttes i HTML-spesifikasjonene.

Se Stack Overflow-spørsmålet Er dette utsagnet riktig? HTTP GET-metoden har alltid ingen tekstmeldinger for en diskusjon.

Det er imidlertid uvanlig. Du vil overraske folk med den løsningen. Det er bare å bytte til en POST.

Den eneste ulempen (oppad?) er irriterende RESTfulness-acolytter.

Kommentarer

  • det er tekniske ulemper siden mange javascript-biblioteker ikke ' t støtter GET med en kropp. For databaser der du utfører et søk, er det logisk å gjøre det på den måten, men du ville ikke ' t være i stand til å ringe fra en enkelt side-app til ElasticSearch eller SOLR-forekomsten (de eneste API-ene der jeg så denne kombinasjonen implementert).
  • Dette spørsmålet sier det samme: stackoverflow.com/questions/978061/http-get-with-request-body " Ja. Med andre ord, enhver HTTP-forespørsel meldingen får inneholde en meldingstekst, og må dermed analysere meldinger med tanke på det antics for GET er imidlertid begrenset slik at et legeme, hvis noen, ikke har noen semantisk betydning for forespørselen. Kravene til parsing er atskilt fra kravene til metodesemantikk. Så ja, du kan sende en kropp med GET, og nei, det er aldri nyttig å gjøre det. " Det faktiske svaret har flere detaljer.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *