Una domanda simile è pubblicato qui: What's an appropriate HTTP status code to return by a REST API service for a validation failure?Qual è il codice di stato HTTP appropriato da restituire se un utente tenta di accedere con un nome utente/password errati, ma il formato corretto?
La risposta nel thread afferma sopra che "Per esempio, se l'URI si suppone di avere una data di ISO-8601 e si scopre che è nel formato sbagliato o si riferisce a febbraio 31st, quindi restituiresti un HTTP 400. Idem se ti aspetti un XML ben formato in un corpo di entità e non riesci ad analizzarlo. "
Tuttavia, cosa succede se l'utente ha inviato dati formattati correttamente? Con questo voglio dire, l'utente ha inviato una semplice stringa/testo alfabetico per il nome utente e la password (che è perfettamente valida per la mia applicazione). L'unico problema è che la password non corrisponde al nome utente. In questo caso, 400 sarà errato perché è perfettamente sintassi valida e ben formata.
Un 401 sarebbe errato (come suggerito qui: Which HTTP status code to say username or password were incorrect?) perché l'utente non sta provando ad accedere ad alcuna pagina, sta semplicemente cercando di accedere e ha inserito dati che non corrispondono.
Se si guarda indietro al primo post a cui mi sono collegato, la seconda risposta indica che 422 è la risposta corretta (e sembra corretto per me), tuttavia, sto usando Django Rest Framework e 422 non fa parte del codici di stato (un elenco dei codici di stato che fanno parte di DRF può essere trovato qui: http://www.django-rest-framework.org/api-guide/status-codes/#client-error-4xx)
404 inoltre non sembra corretto perché i dati sono accettati con successo e non rifiutati.
Detto questo, qual è la vera risposta corretta che dovrebbe essere utilizzata?
oh hai ragione, 401 è quello che dovrei usare. Wow, non posso credere di aver perso la seconda parte della spiegazione. Grazie. Segnerò questa domanda come corretta in 8 minuti quando me lo consente. – user2719875
Gli standard sono dannati, penso che 418 sia ancora la migliore risposta – sjagr
Dalla stessa parte che stai citando, una risposta 401 indica che la richiesta non è stata applicata **. Pertanto, nessun tentativo di accesso ** è stato effettuato, poiché l'autorizzazione è necessaria prima a un livello inferiore. Questo può accadere di solito quando sono nidificati diversi livelli di sicurezza ed è una risposta valida per indicare il requisito di autorizzare con un livello esterno prima di tentare di eseguire l'autenticazione con un livello interno. – spectras