Passa al contenuto principale

Codici di risposta

CodiceSignificatoRipetere?
200La richiesta è stata compresa. Controllate gli esiti per pezzoNo
400Il pacchetto o il JSON è stato rifiutato prima di leggere qualsiasi pezzoNon senza correggerlo
401La chiave è assente, non valida o revocataNo
5xxProblema nostro — conservate il file e riprovate

Quello che trae in inganno

200 non significa che sia andato tutto bene.

I rifiuti di business vivono negli esiti per pezzo, non nello stato HTTP. Un file in cui tutti e tre i pezzi sono stati rifiutati restituisce comunque 200, perché la richiesta in sé è stata compresa e risposta correttamente.

Quindi il controllo non è mai soltanto if (status == 200) ok(). È:

status == 200 → leggere totais.recusadas e la lista itens

Abbiamo scelto questo invece di restituire 400 per un file parzialmente fallito perché il file non è atomico: con 97 pezzi creati e 3 rifiutati, né "successo" né "fallimento" è vero, e solo la lista delle voci dice cosa è realmente accaduto.

400 contro un pezzo rifiutato

Entrambi significano che qualcosa nel dato non va, ma avvengono in momenti diversi e richiedono gestioni diverse.

400 è l'intero pacchetto rifiutato prima che venga letta una riga — uno ZIP senza foglio nella radice, un'estensione non supportata, un foglio illeggibile. Il corpo è testo semplice, senza lista di voci, perché nessuna voce è mai esistita.

REJECTED dentro un 200 è una riga che ha fallito mentre le altre sono entrate. Correggete quella riga e reinviatela da sola.

5xx e cosa non fare

Un 5xx significa che il contenuto non è mai stato il problema. Rete, database, un difetto dalla nostra parte.

Conservate il file e riprovate. Non spostatelo in una cartella di errore, non segnate l'ordine come fallito, e non chiedete a qualcuno di riesportarlo dal vostro gestionale. Gli stessi byte funzioneranno quando saremo tornati.

È esattamente ciò che fa il Mover.Glass Connector presso di voi: un guasto di trasporto lascia il pacchetto nella cartella di ingresso per il ciclo successivo, e solo un rifiuto di contenuto lo sposta da parte. Se state scrivendo un vostro client, questa distinzione è quella che vale la pena copiare.