Web API Response, Error Code Convention [duplicate]

0

Immagina di sviluppare un client front-end che utilizzerà un'API. Stai lavorando sulla pagina di accesso e vuoi mostrare gli errori agli utenti sotto ciascun campo, in questo caso vuoi gli errori relativi alla password sotto il campo della password. Inviate le informazioni di accesso all'endpoint, la password non è corretta e il seguente JSON viene restituito dal server:
{ "status": 400, "message": "Incorrect password." }

Come puoi sapere quale campo ha causato questo errore? Certo, il campo del messaggio di errore ti è utile come un umano come sai cosa è andato storto, ma senza, ad esempio, interrogando la stringa del messaggio per la parola "password", non hai modo di sapere da quale campo proviene questo errore codice.

Sto cercando di trovare una soluzione per questo e volevo ottenere un feedback e imparare standard / convenzioni per questo genere di cose.
La mia soluzione è quella di aggiungere un altro campo alla risposta JSON che fornisce un codice int per ogni errore specifico, consentendo al client di gestire diversi codici di errore in modi diversi. Tutti i codici potrebbero essere inclusi nella documentazione dell'API. Esistono altri codici per altri errori; 002 per "username preso", 003 per "post non trovato", ecc.

Ecco un esempio:
{ "status": 400, "code": 001, "message": "Incorrect password." }

In alternativa, questo potrebbe essere semplificato in qualcosa di breve che può essere utilizzato con le istruzioni condizionali:
{ "status": 400, "message": "incorrect_password" }

Usato così: if (response.message == "incorrect_password") // show error below password field

Per favore, fammi sapere qualsiasi problema ovvio con questo metodo e condividi i tuoi metodi di restituzione degli errori al client in un modo che permetta loro di usare la logica condizionale in base all'errore.

Post correlati: risposte di errore di convalida in REST API

Salute:)

    
posta braed 16.03.2018 - 17:14
fonte

1 risposta

6

How can you know which field caused this error?

Rendi esplicito?

401  # The HTTP "Unauthorized" code is outside the JSON.
{
  "message": "Your credentials cannot be accepted",
  "invalid_fields": [
    "login",
    "password"
  ]
}

(Le migliori pratiche suggeriscono di convalidare una coppia login-password, non un singolo elemento della coppia.)

    
risposta data 16.03.2018 - 17:35
fonte

Leggi altre domande sui tag