Sto sviluppando un'applicazione Web API 2 e attualmente sto cercando di formattare gli errori in modo uniforme (in modo che il consumatore sappia anche quale oggetto dati/struttura possono ispezionare per ottenere maggiori informazioni sugli errori). Questo è quello che ho finora:Risposte di errore uniformi e coerenti da API Web ASP.Net 2
{
"Errors":
[
{
"ErrorType":5003,
"Message":"Error summary here",
"DeveloperAction":"Some more detail for API consumers (in some cases)",
"HelpUrl":"link to the docs etc."
}
]
}
Questo funziona bene per eccezioni generate dall'applicazione stessa (cioè controllori all'interno). Tuttavia, se l'utente richiede un URI errato (e ottiene un 404) o utilizza il verbo sbagliato (e ottiene un 405) ecc., Web Api 2 emette un messaggio di errore predefinito, ad es.
{
Message: "No HTTP resource was found that matches the request URI 'http://localhost/abc'."
}
C'è un modo di intrappolare questi tipi di errori (404, 405 etc.) e formattazione di fuori nella risposta di errore nel primo esempio di cui sopra?
Finora ho provato:
- personalizzato ExceptionAttribute inherting
ExceptionFilterAttribute
- personalizzato ControllerActionInvoker inherting
ApiControllerActionInvoker
IExceptionHandler
(nuovo errore globale funzione Trattamento da API Web 2,1)
Tuttavia nessuno di questi approcci è in grado di intercettare questo tipo di errori (404, 405 ecc.). Qualche idea su come/se questo può essere raggiunto?
... o, sto andando su questo nel modo sbagliato? Devo formattare solo le risposte di errore nel mio stile particolare per errori a livello di applicazione/utente e fare affidamento sulle risposte di errore predefinite per cose come 404?
'Dovrei unico formato risposte di errore nel mio stile particolare per errori a livello di applicazione/utente e fare affidamento sulle risposte di errore predefinite per cose come 404? '... la mia opinione è sì –
Sono sempre più incline a questo approccio. Grazie per le tue fantastiche risposte/commenti. –