In generale, i codici di risposta 5xx indicano errori non programmatici, ad esempio un errore di connessione al database o un altro errore di dipendenza di sistema/libreria. In molti casi, si prevede che il cliente possa inviare nuovamente la stessa richiesta in futuro e si aspetta che abbia successo.
Sì, alcuni web-framework risponderanno con codici 5xx, ma quelli sono in genere il risultato di difetti nel codice e il framework è troppo astratto per sapere cosa è successo, quindi il valore predefinito è questo tipo di risposta; questo esempio, tuttavia, non significa che dovremmo avere l'abitudine di restituire codici 5xx come risultato di un comportamento programmatico non correlato a sistemi fuori processo.Esistono molti codici di risposta ben definiti che sono più adatti dei codici 5xx. Non essere in grado di analizzare/convalidare un dato input non è una risposta 5xx perché il codice può accettare una risposta più adeguata che non lascerà il cliente pensando di poter inviare nuovamente la stessa richiesta, quando in realtà non possono farlo.
Per essere chiari, se l'errore riscontrato dal server era dovuto all'ingresso CLIENT, questo è chiaramente un errore CLIENT e deve essere gestito con un codice di risposta 4xx. L'aspettativa è che il cliente correggerà l'errore nella sua richiesta e invierà nuovamente.
È completamente accettabile, tuttavia, rilevare gli errori non elaborati e interpretarli come una risposta 5xx, ma tenere presente che è necessario includere ulteriori informazioni nella risposta per indicare esattamente cosa non è riuscito; e ancora meglio se è possibile includere tempi di SLA per affrontare.
Non credo sia una buona pratica interpretare "un errore imprevisto" come errore 5xx perché si verificano errori.
È un monitor di avviso comune che inizia a segnalare i tipi 5xx di errori, poiché questi in genere indicano sistemi guasti, piuttosto che codice non riuscito. Quindi, codice di conseguenza!
capito e sono d'accordo. Stavo cercando di scoprire se è possibile fare una differenza se lo sviluppatore sta gestendo tutti i casi o meno. In realtà non ha senso pensare in questo modo. Non c'è differenza in uno sviluppatore che ha rilevato un errore imprevisto e ne ha restituito 500 o non lo ha rilevato: il test ha avuto esito negativo ed è questo il problema importante. – faboolous
Se si desidera distinguere tra un'eccezione del server gestita e non gestita, è possibile farlo utilizzando la registrazione (sul lato server) o nel corpo della richiesta (quindi il client, in questo caso il test). – CodeCaster
chiarimenti utili. Ma questo codice di stato 500 può essere restituito dal server a causa di problemi di formattazione nel corpo della richiesta? –