Questa è una domanda concettuale.
Ho un'applicazione client (mobile) che deve supportare un'azione di accesso su un servizio web RESTful. Poiché il servizio Web è RESTful, ciò equivale al client che accetta un nome utente / password dall'utente, verificando tale nome utente / password con il servizio e quindi ricordandosi di inviare quel nome utente / password con tutte le richieste successive.
Tutte le altre risposte in questo servizio Web vengono fornite in formato JSON.
La domanda è: quando interrogo il servizio Web semplicemente per scoprire se un determinato nome utente / password è valido, il servizio Web dovrebbe sempre rispondere con dati JSON che mi dicono che ha avuto successo o meno, o dovrebbe restituire HTTP 200 con buone credenziali e HTTP 401 su cattive credenziali.
Il motivo per cui lo chiedo è che alcuni altri servizi RESTful usano 401 per cattive credenziali anche quando stai solo chiedendo se le credenziali sono valide. Tuttavia, la mia comprensione delle risposte 401 è che rappresentano una risorsa a cui non dovresti avere accesso senza credenziali valide. Ma la risorsa di accesso DOVREBBE essere accessibile a chiunque perché l'intero scopo della risorsa di accesso è di dirti se le tue credenziali sono valide.
In altre parole, mi sembra che una richiesta del tipo:
myservice.com/this/is/a/user/action
dovrebbe restituire 401 se vengono fornite credenziali errate. Ma una richiesta come:
myservice.com/are/these/credentials/valid
non dovrebbe mai restituire 401 perché quel particolare URL (richiesta) è autorizzato con o senza credenziali valide.
Mi piacerebbe sentire alcune opinioni giustificate in un modo o nell'altro su questo. Qual è il modo standard di gestirlo, ed è il modo standard di gestirlo logicamente appropriato?