Sono un po 'all'incrocio con qualche progetto API per un client (JS in un browser) per parlare con un server. Utilizziamo HTTP 409 Conflict per rappresentare il fallimento di un'azione a causa di un blocco di sicurezza attivo. Il blocco satefy impedisce agli sviluppatori di apportare accidentalmente modifiche ai sistemi di produzione dei nostri clienti. Mi è stato assegnato il compito di gestire i 409 un po 'più con garbo sul client per indicare perché una determinata chiamata API non è riuscita.
La mia soluzione era quella di avvolgere i gestori di errori di una qualsiasi delle nostre chiamate AJAX che mostreranno una notifica sul client quando qualcosa fallisce a causa di 409 - tutto va bene e funziona bene insieme ad altri errori 4XX e 5XX che usano lo stesso meccanismo.
Si è verificato un problema in cui uno dei nostri gestori di route risponde con 409s quando riscontra un errore di logica aziendale: il mio wrapper AJAX segnala che il blocco di sicurezza è attivo, mentre il gestore degli errori esistente del client segnala quale (pensa) il problema si basa sul corpo della risposta. Una soluzione semplice sarebbe quella di modificare la risposta del gestore o il codice di stato che utilizziamo per rappresentare il blocco di sicurezza.
Il che mi porta al mio incrocio: i codici di stato HTTP dovrebbero anche essere usati per rappresentare errori di logica aziendale? Questa domanda affronta lo stesso problema che sto affrontando, ma non ha ottenuto molta trazione. Come suggerito nella risposta collegata, mi sto orientando verso l'utilizzo di HTTP 200 OK con un corpo appropriato per rappresentare il fallimento all'interno della logica aziendale.
Qualcuno ha delle opinioni forti qui? Qualcuno è in grado di convincermi che questo è il modo sbagliato di rappresentare il fallimento?
400 Bad Request
come un codice HTTP generale sembra meglio coprire gli errori di business logic come classe.
400 Bad Request
quando mancano o non possono essere letti / analizzati i dati. Cioè i dati della richiesta stessa sono in qualche modo cattivi.
400 Bad Request
. Il motivo di questa separazione è perché i sistemi, gli sviluppatori o i lettori di documenti futuri potrebbero essere confusi dalla tua deviazione dello standard mondiale.