Come assicurarsi che il limite del payload JSON non superi un certo valore durante una richiesta web?

0

Devo chiamare le API di terze parti in cui la dimensione del payload ha un limite massimo di dimensioni, ad esempio 4 MB. Ciò significa che non posso chiamare l'API con un payload di dimensioni superiori a 4 MB.

Come posso risolvere questo in modo algoritmico? Perché una soluzione semplice potrebbe essere come ogni volta che generi un carico utile, controllo la dimensione e, se supera, posso rigenerarla. Ma questa non è una soluzione efficace e non va bene dal punto di vista delle prestazioni.

Per maggiori dettagli, prendiamo questo esempio. Esiste un'unica API in cui è possibile archiviare le fatture in un'unica chiamata. Ora posso avere migliaia di fatture e ogni fattura potrebbe avere dati diversi per azienda.

In questo, come posso determinare un punto di riferimento per inviare un numero limitato di fatture per soddisfare il requisito del limite di dimensioni?

    
posta Fenil Rathod 15.05.2017 - 09:30
fonte

1 risposta

2

Se si tratta di limiti alla dimensione di una risposta dal tuo server, rispondi a questo: Che cosa fa l'API se superi il limite di 4MB? Fa qualcosa di sensato? Ci sono due modi sensati: a. L'API restituisce un errore che indica che si supera il limite, nel qual caso si riprova, chiedendo la metà di molti articoli. Oppure l'API restituisce uno stato che indica che tra gli elementi n desiderati, m ≤ n elementi sono stati effettivamente elaborati, quindi sai che gli elementi m sono stati eseguiti e chiedi i restanti.

L'ultimo caso è il migliore IMO: se vuoi ottenere un milione di articoli, ne richiedi un milione e l'API ti dice che hai solo 2.500. Quindi chiedi 997.500 e così via.

Se si tratta di limiti all'invio di dati al server: si generano dati per un elemento dopo l'altro, creando i dati che si stanno andando al server. Per ogni articolo, controlli se aggiungere quell'elemento renderebbe i tuoi dati troppo grandi, e in questo caso invierai tutti i dati che hai avuto fino ad ora tranne il nuovo elemento, e quindi il nuovo elemento diventerà parte del messaggio successivo al server.

    
risposta data 16.05.2017 - 00:11
fonte

Leggi altre domande sui tag