Sto progettando un'API RESTful e mi chiedo quale sia il formato migliore per i messaggi di errore di convalida.
Ad esempio, l'endpoint di creazione del mio account accetta un oggetto JSON:
user: {
first_name: string,
last_name: string,
address: {
street: string,
city: string,
zip_code: string
}
}
Le mie risposte saranno nel seguente formato:
{
code: 400, // HTTP code
message: "Validation failed", // general message
type: "validation_failed", // there are other types of errors as well
errors: WHAT_DO_I_SHOW_HERE
}
Ho diverse opzioni per i messaggi di errore di convalida:
Formato 1
errors: {
last_name: "First name is required",
address: {
zip_code: "ZIP code is invalid"
}
}
o appiattisci gli errori come nel formato 2
errors: {
last_name: "First name is required",
"address.city": "City is required",
"address.zip_code": "ZIP code is invalid"
}
o usa un array, in cui ogni elemento può avere nome di campo, codice di errore, messaggio di errore, errori annidati, ecc.
errors: [
{
field: "first_name",
message: "First name is required",
},
{
field: "address",
errors: [
{
field: "zip_code",
message: "ZIP code is invalid"
}
]
}
]
o
errors: [
{
field: "first_name",
message: "First name is required",
},
{
field: "address.zip_code",
message: "ZIP code is invalid"
}
]
Apparentemente il formato della matrice è più flessibile poiché il nome del campo è facoltativo, quindi può contenere errori relativi a una combinazione di più campi (ad esempio, l'ora di fine di un intervallo di tempo deve essere successiva all'ora di inizio). Ma la mia domanda è, quale sarebbe più facile per gli utenti API consumare?