+1 alla risposta Barts - per motivi di sicurezza. Di solito sono d'accordo che 409 è un buon codice di stato per sth. quello esiste già. Ma in un ambiente di account utente/autenticazione/autorizzazione ecc., Tenderei a non esporre gli account utente esistenti nel database.
Ovviamente ci sono altri meccanismi di gestione della sicurezza in questo luogo. Se non ti dispiace esporre un piccolo numero di account, potresti aggiungere un comportamento alla tua applicazione che restituisce 401 o 403 su numerosi 409 eventi da un IP.
Un'altra opzione (in generale) è quella di definire un codice di stato da solo per avere un 2xx diverso dalle varianti standard 2xx esistenti. Questa potrebbe essere un'opzione se non vuoi gestire un "già esiste" come un errore. Tuttavia, questo sarebbe considerato come non standard e avrebbe lo stesso carattere non sicuro come un 409 nel tuo esempio concreto.
Non penso sia una buona idea. Se la connessione viene effettuata tramite un proxy, i risultati potrebbero essere imprevedibili. – Cheery
Penso che sia una buona idea! Perché HTTP ha il codice di stato, quindi usali! È anche molto utile quando devi eseguire il debug in un secondo momento e avere solo file di accesso o altri file di registro, ma se c'è il codice HTTP ... :) – powtac
'409 - Conflict 'è una scelta molto buona per questo tipo di risposta. –