Sono a un bivio con un progetto API per un client (JS in un browser) per parlare con un server. Usiamo HTTP 409 Conflict per rappresentare il fallimento di un'azione a causa di un blocco di sicurezza in vigore. Il blocco di satefy impedisce agli sviluppatori di apportare modifiche involontarie nei sistemi di produzione dei nostri clienti. Sono stato incaricato di gestire 409s un po 'più garbatamente sul client per indicare il motivo per cui una particolare chiamata API non è riuscita.
La mia soluzione era di avvolgere i gestori degli errori di tutte le nostre chiamate AJAX che visualizzeranno 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 .
È sorto un problema in cui uno dei nostri gestori di route risponde con 409 quando incontra un errore di business logic: il wrapper AJAX segnala che il blocco di sicurezza è attivo, mentre il gestore di errori esistente del client riporta cosa (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 bivio: i codici di stato HTTP dovrebbero essere utilizzati anche per rappresentare errori di logica aziendale? Questa domanda risolve lo stesso problema che sto affrontando ma non ha ottenuto molta trazione. Come suggerito nella risposta collegata, mi sto proponendo di utilizzare HTTP 200 OK con un corpo appropriato per rappresentare un errore all'interno della logica di business.
Qualcuno ha qualche opinione strong qui? Qualcuno è in grado di convincermi che questo è il modo sbagliato di rappresentare un fallimento?