in Architettura Software, Informatica

.Net 7 e Problem Details

Nello sviluppo di WebApi, la generazione di errori facilmente interpretabili nella generazione di eccezioni risulta un punto particolarmente importante. Nelle versioni precedenti di .NET Core gli errori non venivano gestiti con un payload standard e spesso era necessario ricorrere a librerie di terze parti per fornire la giusta documentazione. Una di queste librerie è sicuramente Hellang Middleware ProblemDetails, facilmente integrabile e personalizzabile all’interno del Program.cs.

A partire da .NET 7 è possibile utilizzare IProbelDetailsService per poter mappare la risposta al problema in maniera dettagliata.

L’utilizzo è piuttosto semplice, è necessario aggiungere la seguente riga all’interno del Program.cs della nostra applicazione:

 builder.Services.AddProblemDetails();  

in questo modo la generazione di un eccezione all’interno della nostra applicazione, produrrà per impostazione predefinita un messaggio di errore di questo tipo:

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.6.1",
    "title": "System.Exception",
    "status": 500,
    "detail": "The number is less than or equal to 0!",
    "traceId": "00-1bb2c6bbfe99c8d6db6a49d7116259fc-1be4dd33a66ac5f3-00",
    "exception": { ... }
}

sicuramente molto piu leggibile del messaggio generato dall’eccezione stessa.

E’ possibile configurare il messaggio visualizzato utilizzando ProblemDetailsOption come indicato in questo articolo.