Diversi server con cui ho avuto a che fare restituiranno HTTP 200 per richieste che il client dovrebbe considerare un errore, con qualcosa come "successo: falso" nel corpo.
Questa non mi sembra una corretta implementazione dei codici HTTP, in particolare in caso di autenticazione fallita. Ho letto i codici di errore HTTP in modo piuttosto sintetico in quanto "4xx" indica che la richiesta non deve essere ripetuta fino a quando non viene modificata, mentre "5xx" indica che la richiesta può essere valida o meno e può essere ritentata, ma non ha avuto esito positivo. In questo caso 200: login fallito, o 200: impossibile trovare quel file, o 200: parametro mancante x, sembra decisamente sbagliato.
D'altra parte, ho potuto vedere l'argomentazione sostenuta che "4xx" dovrebbe indicare solo un problema strutturale con la richiesta. Quindi è corretto restituire 200: utente / password errati anziché 401 non autorizzati perché al client è consentito effettuare la richiesta, ma risulta errato. Questo argomento potrebbe essere riassunto in quanto, se il server fosse in grado di elaborare la richiesta e prendere una decisione, il codice di risposta dovrebbe essere 200 e spetta al cliente controllare il corpo per ulteriori informazioni.
Fondamentalmente, questa sembra essere una questione di preferenza. Ma questo non è soddisfacente, quindi se qualcuno ha una ragione per cui uno di questi paradigmi è più corretto, vorrei saperlo.
success: false
implica che la richiesta non è riuscita e tu lo sai. Dovrebbe essere un 500. Qualcosa come il tuo nome utente / password errati sarebbe un 401. Non è così ambiguo.