Sto mantenendo una vecchia pagina .aspx in cui tutti i dati richiesto dalla pagina per mostrare il contenuto viene passato nellURL della richiesta GET come parte della stringa di query. Il risultato è che, man mano che continuiamo ad aggiungere funzionalità, lURL diventa sempre più grande.

Sto pensando di spostare tutti i parametri dalla stringa di query al corpo della richiesta GET.

È una buona decisione di progettazione e qual è il caso duso di un corpo nella richiesta GET?

Commenti

  • Perché non utilizzare semplicemente una richiesta POST?
  • Perché non sto creando o aggiornando nulla. Sto solo recuperando informazioni dal server.
  • Si ' prevede che le richieste GET siano idempotenti: richiedere lo stesso URL più volte si ottiene sempre un risultato equivalente. Questo ad es. consente la memorizzazione nella cache (cosa che alcuni browser e proxy fanno in modo molto aggressivo). Se sposti i parametri della query nel corpo della richiesta, stai violando questa aspettativa, quindi evita questo. ' ti stai preparando per problemi difficili da eseguire il debug. Sfortunatamente, alcuni sistemi hanno un limite di lunghezza dellURL dellordine di pochi KB. Se stai ancora progettando la tua API e scopri che dovrai gestire query molto complesse, unAPI GraphQL potrebbe essere più adatta di REST.
  • Oltre a ciò che ha detto @amon, inserire un corpo in un GET richiesta è esplicitamente in violazione delle specifiche HTTP. Usa POST.
  • @Manya I commenti su questa risposta di Stack Overflow discutono un po di Elasticsearch. Nota che Elasticsearch non viene in genere utilizzato direttamente dai browser ma solo dalle applicazioni interne, quindi hanno un po più di flessibilità: hai il pieno controllo sul client e sulla rete.

Risposta

Le richieste GET con un corpo sono supportate nelle specifiche HTML.

Consulta la domanda di overflow dello stack Questa affermazione è corretta? Il metodo HTTP GET non ha sempre il corpo del messaggio per una discussione.

Tuttavia, è insolito. Sorprenderai le persone con questa soluzione. Il semplice passaggio a un POST è unidea migliore.

Lunico lato negativo (lato positivo?) sono i fastidiosi accoliti di RESTfulness.

Commenti

  • ci sono svantaggi tecnici poiché molte librerie javascript non ' t supporta GET con un corpo. Per i database in cui stai eseguendo una ricerca, ha senso logico farlo in questo modo, ma non ' t essere in grado di effettuare la chiamata da unapp a pagina singola alla tua istanza ElasticSearch o SOLR (le uniche API in cui ho visto implementata questa combinazione).
  • Questa domanda dice la stessa cosa: stackoverflow.com/questions/978061/http-get-with-request-body " Sì. In altre parole, qualsiasi richiesta HTTP message può contenere un corpo del messaggio, e quindi deve analizzare i messaggi tenendo presente questo. Server sem le buffonate per GET, tuttavia, sono limitate in modo tale che un corpo, se presente, non ha alcun significato semantico per la richiesta. I requisiti sullanalisi sono separati dai requisiti sulla semantica del metodo. Quindi sì, puoi inviare un corpo con GET e no, non è mai utile farlo. " La risposta effettiva contiene più dettagli.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *